LINQ- 将 List 转换为值为 List 的 Dictionary

我有一个

List<MyObject>

我从数据库里找到的。但是,为了分组的目的,我希望它由 MyObject 中的一个属性键入。使用 LINQ 将我的列表转换为:

Dictionary<long, List<MyObject>>

I have the following:

myObjectList.ToDictionary(x => x.KeyedProperty)

但它又回来了:

Dictionary<long, MyObject>
102843 次浏览

这听起来像是您希望按 KeyedPropertyMyObject实例进行分组,并将该分组放入 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);

If you want to place that in a dictionary, then you could use the ToDictionary扩展方法, like so:

IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
l => l.Key);