繁体   English   中英

C#将Flat List <T>展开为Dictionary <T,ICollection <int >>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM