MSDN 是这样解释 Lookup 的:
ALookup<TKey, TElement> 类似于Dictionary<TKey, TValue>. 不同之处在于 Dictionary 将键映射到单个值,而 Lookup 将键映射到值的集合。
Lookup<TKey, TElement>
Dictionary<TKey, TValue>
我不觉得这个解释特别有用。查找用于什么?
它是一个IGrouping和字典之间的交叉。它允许您通过一个键将项目组合在一起,然后通过该键以有效的方式访问它们(而不是仅仅遍历它们,这就是GroupBy您可以做的)。
IGrouping
GroupBy
例如,您可以加载 .NET 类型并按命名空间构建查找…然后非常轻松地获取特定命名空间中的所有类型:
using System; using System.Collections.Generic; using System.Linq; using System.Xml; public class Test { static void Main() { // Just types covering some different assemblies Type[] sampleTypes = new[] { typeof(List<>), typeof(string), typeof(Enumerable), typeof(XmlReader) }; // All the types in those assemblies IEnumerable<Type> allTypes = sampleTypes.Select(t => t.Assembly) .SelectMany(a => a.GetTypes()); // Grouped by namespace, but indexable ILookup<string, Type> lookup = allTypes.ToLookup(t => t.Namespace); foreach (Type type in lookup["System"]) { Console.WriteLine("{0}: {1}", type.FullName, type.Assembly.GetName().Name); } } }
(我通常会var在普通代码中使用大多数这些声明。)
var