![](/img/trans.png)
[英]How to convert ICollection<ICollection<int>> to List<List<int>> in C#
[英]C# Expand Flat List<T> to Dictionary<T,ICollection<int>>
我有一个List<MyClass>
:
public int MyClass
{
public int One { get; set; }
public int Two { get; set; }
}
现在,数据可以(并且确实)如下所示:
一:一,二:9
一:2,二:9
一:一,二:8
一:3,二:7
看看“One”如何出现两次? 我想将这个平坦的序列投影到分组的Dictionary<int,ICollection<int>>
:
KeyValuePairOne:{Key:1,Value:{9,8}}
KeyValuePairTwo:{Key:2,Value:{9}}
KeyValuePairThree:{Key:3,Value:{7}}
我猜我需要组合.GroupBy
和.ToDictionary
?
这就是ToLookup扩展方法的用途。 如果密钥出现两次,ToDictionary将抛出的地方,ToLookup反而很好用它并做你正在寻找的东西。
var list = new List<MyClass>();
var dictionary = list.GroupBy(x => x.One)
.ToDictionary(x => x.Key, x => x.ToArray());
这正是你如何做到的:
Dictionary<int, List<MyClass>> result =
items.GroupBy(x => x.One).ToDictionary(x => x.Key, x => x.ToList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.