LINQ查询创建字典词典

时间:2014-04-29 14:26:27

标签: c# linq dictionary

我有以下架构:

ParentKey |钥匙|值

   1       A      3
   1       B      5
   1       C      6
   2       A      4
   2       D      8

我将其作为IQueryable<MyObject>

MyObject {
    public int ParentKey{get;set;}
    public String Key{get;set;}
    public int Value{get;set;}
}

我想把它变成一个字典词典,其中ParentKey是父词典的键,key是子词典的键。我目前正在循环中这样做,但我想看看如何使用LINQ来完成它。

我保证特定父键中的键始终是唯一的,因此无需担心或检查重复键。

如何编写LINQ查询,将此数据转换为

Dictionary<int, Dictionary<string, int>>

1 个答案:

答案 0 :(得分:11)

您需要先按ParentKey对列表进行分组:

list.GroupBy(l => l.ParentKey)
    .AsEnumerable()     // to shift from IQueryable to IEnumerable and hydrate the results
    .ToDictionary(g => g.Key, g => g.ToDictionary(gg => gg.Key, gg => gg.Value));