我已经使用“ select”关键字和扩展方法来返回IEnumerable<T>
LINQ,但是我需要返回一个泛型Dictionary<T1, T2>
并且无法弄清楚。我从使用类似于以下形式的内容中学到了以下示例:
IEnumerable<T> coll = from x in y
select new SomeClass{ prop1 = value1, prop2 = value2 };
我也对扩展方法做了同样的事情。我假设由于Dictionary<T1, T2>
可以迭代a中的项,因为KeyValuePair<T1, T2>
我可以将上述示例中的“ SomeClass”替换为“ new KeyValuePair<T1, T2> { ...
”,但这没有用(键和值被标记为只读,因此我无法编译此代码)。
这可能吗,还是我需要分多个步骤进行?
谢谢。
扩展方法还提供了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”
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句