我有以下架构:

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>>

最佳答案

您需要先按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));

关于c# - LINQ查询以创建字典词典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23367511/

10-12 21:42