c# - 使用 LINQ 选择字典 <T1, T2>

标签 c# .net linq generics

我使用了“select”关键字和扩展方法来返回 IEnumerable<T>使用 LINQ,但我需要返回一个通用的 Dictionary<T1, T2>想不通。我从中学到的示例使用了类似于以下形式的内容:

IEnumerable<T> coll = from x in y 
    select new SomeClass{ prop1 = value1, prop2 = value2 };

我也对扩展方法做了同样的事情。我假设因为 Dictionary<T1, T2> 中的项目可以迭代为 KeyValuePair<T1, T2>我可以将上面示例中的“SomeClass”替换为“new KeyValuePair<T1, T2> { ...”,但这不起作用(Key 和 Value 被标记为只读,因此我无法编译此代码)。

这可能吗,还是我需要分多个步骤来完成?

谢谢。

最佳答案

扩展方法还提供了一个 ToDictionary扩大。它使用起来相当简单,一般用法是为键传递 lambda 选择器并将对象作为值,但您可以为键和值传递 lambda 选择器。

class SomeObject
{
    public int ID { get; set; }
    public string Name { get; set; }
}

SomeObject[] objects = new SomeObject[]
{
    new SomeObject { ID = 1, Name = "Hello" },
    new SomeObject { ID = 2, Name = "World" }
};

Dictionary<int, string> objectDictionary = objects.ToDictionary(o => o.ID, o => o.Name);

然后 objectDictionary[1] 将包含值“Hello”

关于c# - 使用 LINQ 选择字典 <T1, T2>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/617283/

相关文章:

c# - ASP.NET VNext 是云优化的是什么意思?

c# - 在 WebBrowser 控件的新选项卡中打开新网页

c# - Linq 查询到 IEnumerable<T> 扩展方法

c# - 导入命名空间不使用,影响性能?

c# - 将 <img> HTML 标签添加到 C# 字符串

C#自动从数据库更新数据

.net - 如何使用 .mdf 文件部署 winform 应用程序

c# - 隐式转换 List<int?> 到 List<int>

c# 与 linq 的组合

c# - 使用两个应用程序时的 Azure AD 身份验证重定向循环(cookie 错误)