MSDN这样解释查找:

Lookup<TKey, TElement>美元

我不认为那个解释有什么特别的帮助.查找是用来做什么的?

推荐答案

这是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.)

.net相关问答推荐

使用EFCore.BulkExtensions库方法BulkInertOrUpdate时区分插入和更新的记录

WinForm Task.Wait :为什么它会阻塞 UI?

Msbuild try 构建 msbuild.exe 而不是我的 .csproj 文件

.NET Async / Await:状态机如何知道何时继续执行?

FileHelpers 未使用正确的日期格式

EGC / 文本元素上的 .NET String.Split

C#.Net 中的可选返回

如何创建 LINQ to SQL 事务?

从 switch 块中跳出 foreach 循环

将 BitmapImage 转换为 Bitmap,反之亦然

带有输入字段的消息框

.net 自定义配置如何不区分大小写解析枚举 ConfigurationProperty

Dapper 是否支持 SQL 2008 表值参数?

String.Replace() 与 StringBuilder.Replace()

CryptographicException 未处理:系统找不到指定的文件

为什么发布和调试模式下的代码行为不同?

对构造函数进行单元测试重要吗?

是 C# 中的 bool 读/写原子

当它被抛出和捕获时,不要在那个异常处停止调试器

如何在 ASP.NET MVC 中重定向到动态登录 URL