二、第一种用法: public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(this IEnumerable<TSource> source , Func<TSource, TKey> keySelector); 官方释义:根据指定的键选择器函数,从IEnumerable<TSource>创建一个 ILookup<TKey, TSource> 因为lookups返回的类型为ILookUp<TKey,TSource>(实际继承于IEnumerable<IGrouping<TKey,TSource>>),因此以上返回的类型为ILookUp<string ILookUp<string,Person>是已经LookUp后的集合,内部集合元素为Person,且ILookUp有一个Key属性,类型为string(指的是Gender属性类型),用于LookUp的标识 public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(this IEnumerable<TSource> source
HttpControllerTypeCache 2: { 3: //其他成员 4: internal Dictionary<string, ILookup string, Type>> Cache { get; } 5: } 缓存的HttpController类型通过只读属性Cache获取,这是一个类型为Dictionary<string, ILookup 该字典的Key表示HttpController的名称(HttpController类型名称去除“Controller”后缀),其Value返回的ILookup<string, Type>对象包含一组具有相同名称的 所以一个HttpController名称可能对应着多个HttpController类型,这也是为何HttpControllerTypeCache缓存的数据是一个类型为Dictionary<string, ILookup
(四)ToLookup 把集合转换成ILookup<TKey,TElement>类型的集合,ILookup<TKey,TElement>集合与Dictionary<TKey,TElement>集合不同的是 :Dictionary<TKey,TElement>中Key和Value值一一对应,而ILookup<TKey,TElement>集合中Key和Value值是一对多的对应关系。 如:使用ILookup<TKey,TElement>把集合中的元素分组显示 使用扩展方法: var q = infos.ToLookup(p=>p.Nation); 使用查询表达式语法: var q =
sealed class HttpControllerTypeCache 2: { 3: //其他成员 4: internal Dictionary<string, ILookup <string, Type>> Cache { get; } 5: } 缓存的HttpController类型通过只读属性Cache获取,这是一个类型为Dictionary<string, ILookup 该字典的Key表示HttpController的名称(HttpController类型名称去除“Controller”后缀),其Value返回的ILookup<string, Type>对象包含一组具有相同名称的 所以一个HttpController名称可能对应着多个HttpController类型,这也是为何HttpControllerTypeCache缓存的数据是一个类型为Dictionary<string, ILookup
TElement> X ToArray TSource 数组 X ToDictionary Dictionary<TKey,TValue> X ToList IList<T> X ToLookup ILookup
IEnumerable<>, IReadOnlyCollection<>, IReadOnlyList<> • Dictionary<,>, IDictionary<,>, SortedDictionary<,>, ILookup
ApiDescription>@{ ViewBag.Title = "ASP.NET Web API Help Page"; // Group APIs by controller ILookup
ToLookup():和GroupBy()类似没有延迟加载,但是它会产生一个新的集合对象,这个集合对象由ILookup<TKey,TElement>所组成,允许多个键存在,一个键包含很多关联的实值例如:
System.Linq - 用于查询对象,包括including Enumerable 和ILookup<TKey, TElement>.
通过HttpActionSelector组件实现对目标Action的选择,方法GetActionMapping的返回值为一个ILookup<string, HttpActionDescriptor>类型
apiColl = GlobalConfiguration.Configuration.Services.GetApiExplorer().ApiDescriptions; ILookup
>, ICollection<>, IEnumerable<>, Dictionary<,>, IDictionary<,>, SortedDictionary<,>, SortedList<,>, ILookup
同样,也不会涉及ILookup<TKey,TValue>这样的LINQ接口。本附录是参考而非指南——在写代码时,可以用它来替代MSDN。