我有一个
List<MyObject>
我从数据库中检索到的。但是,出于分组的目的,我希望通过MyObject中的属性对其进行键控。使用LINQ最好的方法是将我的列表转换为:
Dictionary<long, List<MyObject>>
我有以下几点:
myObjectList.ToDictionary(x => x.KeyedProperty)
但它会返回:
Dictionary<long, MyObject>
发布于 2010-08-23 23:40:15
听起来您想要按KeyedProperty
对MyObject
实例进行分组,并将分组放入一个Dictionary<long,List<MyObject>>
中。如果是这样,请尝试执行以下操作
List<MyObject> list = ...;
var map = list
.GroupBy(x => x.KeyedProperty)
.ToDictionary(x => x.Key, x => x.ToList());
发布于 2010-08-23 23:41:00
您应该像这样在Enumerable
class上使用ToLookup
extension method:
List<MyObject> list = ...;
ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);
如果你想把它放在字典里,那么你可以使用ToDictionary
extension method,如下所示:
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
l => l.Key);
https://stackoverflow.com/questions/3549103
复制相似问题