当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用LINQ选择字典<T1,T2>》经验,为你挑选了3个好方法。

我已经使用"select"关键字和扩展方法返回一个IEnumerableLINQ,但我需要返回一个泛型Dictionary而无法弄明白.我通过使用类似于以下内容的形式学习了这个例子:

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

我也用扩展方法做了同样的事情.我假设因为a中的项 Dictionary可以迭代,KeyValuePair因为我可以用""替换上面例子中的"SomeClass new KeyValuePair { ...",但是这不起作用(Key和Value被标记为readonly,所以我无法编译这段代码).

这是可能的,还是我需要在多个步骤中执行此操作?

谢谢.



1> Quintin Robi..:

extensions方法还提供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 objectDictionary = objects.ToDictionary(o => o.ID, o => o.Name);

然后objectDictionary[1]将包含值"Hello"



2> albertein..:
var dictionary = (from x in y 
                  select new SomeClass
                  {
                      prop1 = value1,
                      prop2 = value2
                  }
                  ).ToDictionary(item => item.prop1);

这是假设这SomeClass.prop1Key字典所需的.


`.ToDictionary(item => item.prop1,item => item.prop2);`to explicity也设置了值.

3> Antoine Melt..:

一个集合KeyValuePair更加明确,并且执行得非常好.

Dictionary dictionary = objects
    .Select(x=> new KeyValuePair(x.Id, x.Name))
    .ToDictionary(x=>x.Key, x=>x.Value);

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有