我有一个
List<MyObject>
Run Code Online (Sandbox Code Playgroud)
我从数据库中检索.但是,我希望它由MyObject中的属性键入以进行分组.使用LINQ将列表转换为以下内容的最佳方法是:
Dictionary<long, List<MyObject>>
Run Code Online (Sandbox Code Playgroud)
我有以下内容:
myObjectList.ToDictionary(x => x.KeyedProperty)
Run Code Online (Sandbox Code Playgroud)
但它返回:
Dictionary<long, MyObject>
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 165
听起来你想要对MyObject
实例进行KeyedProperty
分组并将该分组放入Dictionary<long,List<MyObject>>
.如果是,请尝试以下操作
List<MyObject> list = ...;
var map = list
.GroupBy(x => x.KeyedProperty)
.ToDictionary(x => x.Key, x => x.ToList());
Run Code Online (Sandbox Code Playgroud)
cas*_*One 15
您应该在类上使用ToLookup
扩展方法,如下所示:Enumerable
List<MyObject> list = ...;
ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);
Run Code Online (Sandbox Code Playgroud)
如果要将其放在字典中,则可以使用ToDictionary
扩展方法,如下所示:
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
l => l.Key);
Run Code Online (Sandbox Code Playgroud)