问题描述
在.NET/C#应用程序编程开发中,当前有一个集合:
List<MyObject> list;
其中:list
集合是从数据库查询得到的数据,现在有需求需要将这个集合按照集合对象的某一个属性进行分组,然后以这个分组属性的值为键,对应的子集合不值组合一个新的数据字典,如:
Dictionary<long,List<MyObject>> dict;
如果直接使用方法list.ToDictionary(x => x.KeyedProperty)
,得到的结果却是:
Dictionary<long, MyObject>
那么,正确的将这个集合使用Linq转换成值为集合的字典的方法有哪些呢?
方案一
首先使用GroupBy()
方法,对集合进行分组,然后使用ToDictionary()
方法,如下:
List<MyObject> list = ...;
var map = list
.GroupBy(x => x.KeyedProperty)
.ToDictionary(x => x.Key, x => x.ToList());
方案二
使用ToLookup()
扩展方法,实现代码如下:
List<MyObject> list = ...;
ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
l => l.Key);
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册