我已经使用“select”关键字和扩展方法返回一个IEnumerable<T>带有 LINQ 的,但我需要返回一个泛型Dictionary<T1, T2>并且无法弄清楚。我从中学到的示例使用了类似于以下形式的内容:
IEnumerable<T>
Dictionary<T1, T2>
IEnumerable<T> coll = from x in y select new SomeClass{ prop1 = value1, prop2 = value2 };
我也对扩展方法做了同样的事情。我假设由于 a 中的项目 Dictionary<T1, T2>可以迭代,KeyValuePair<T1, T2>因此我可以将上面示例中的“SomeClass”替换为“ new KeyValuePair<T1, T2> { ...”,但这不起作用(键和值被标记为只读,所以我无法编译这段代码)。
KeyValuePair<T1, T2>
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”
objectDictionary[1]