LINQ查询创建字典

本文关键字:字典 创建 查询 LINQ | 更新日期: 2023-09-27 18:00:51

我有以下模式:

ParentKey|Key|Value

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

LINQ查询创建字典

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