LINQ – 将列表转换为值为列表的字典
我有一个
List<MyObject>
我从数据库中检索。 不过,我希望它通过MyObject中的一个属性来进行分组。 LINQ将我的列表转换为以下的最佳方式是:
Dictionary<long, List<MyObject>>
我有以下几点:
myObjectList.ToDictionary(x => x.KeyedProperty)
但它返回:
Dictionary<long, MyObject>
这听起来像你想通过KeyedProperty
分组MyObject
实例,并将该分组放入一个Dictionary<long,List<MyObject>>
。 如果是这样,请尝试以下操作
List<MyObject> list = ...; var map = list .GroupBy(x => x.KeyedProperty) .ToDictionary(x => x.Key, x => x.ToList());
你应该像这样在Enumerable
类上使用ToLookup
扩展方法 :
List<MyObject> list = ...; ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);
如果你想把它放在字典中,那么你可以使用ToDictionary
扩展方法 ,如下所示:
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary( l => l.Key);