首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQ -将列表转换为带有列表形式的值的字典

LINQ -将列表转换为带有列表形式的值的字典
EN

Stack Overflow用户
提问于 2010-08-23 23:35:43
回答 2查看 92.4K关注 0票数 113

我有一个

代码语言:javascript
复制
List<MyObject> 

我从数据库中检索到的。但是,出于分组的目的,我希望通过MyObject中的属性对其进行键控。使用LINQ最好的方法是将我的列表转换为:

代码语言:javascript
复制
Dictionary<long, List<MyObject>>

我有以下几点:

代码语言:javascript
复制
myObjectList.ToDictionary(x => x.KeyedProperty)

但它会返回:

代码语言:javascript
复制
Dictionary<long, MyObject>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-23 23:40:15

听起来您想要按KeyedPropertyMyObject实例进行分组,并将分组放入一个Dictionary<long,List<MyObject>>中。如果是这样,请尝试执行以下操作

代码语言:javascript
复制
List<MyObject> list = ...;
var map = list
  .GroupBy(x => x.KeyedProperty)
  .ToDictionary(x => x.Key, x => x.ToList());
票数 227
EN

Stack Overflow用户

发布于 2010-08-23 23:41:00

您应该像这样在Enumerable class上使用ToLookup extension method

代码语言:javascript
复制
List<MyObject> list = ...;

ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);

如果你想把它放在字典里,那么你可以使用ToDictionary extension method,如下所示:

代码语言:javascript
复制
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
    l => l.Key);
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3549103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档