Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ查询以创建词典词典_C#_Linq_Dictionary - Fatal编程技术网

C# LINQ查询以创建词典词典

C# LINQ查询以创建词典词典,c#,linq,dictionary,C#,Linq,Dictionary,我有以下模式: ParentKey | Key | Value 1 A 3 1 B 5 1 C 6 2 A 4 2 D 8 我将此作为IQueryable 我想把它变成一个字典字典,其中ParentKey是父字典的键,key是子字典的键。我目前正在循环中完成这项工作,但我想看看如何使用LINQ完成这项工作 我保证特定父密钥中的密钥始终是唯一的,因此无需担心

我有以下模式:

ParentKey | Key | Value

   1       A      3
   1       B      5
   1       C      6
   2       A      4
   2       D      8
我将此作为
IQueryable

我想把它变成一个字典字典,其中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));

您从哪种类型开始?@I3arnon我编辑了我的帖子以反映数据如果源是iQuery(如问题所示),那么您希望在DB级别执行第一个group by,然后在编辑之前执行AsEnumerable。公元前1-1年。您的第二个ToDictionary调用将在复制时失败keys@AZOP明确表示,无需担心或检查副本keys@AZ. 这是一个IQueryable,我想将此查询转换为ToDictionaryAsync,但他的回答是有效的,因为我提到,对于给定的父键,这些键保证是唯一的。那么我的错了-1已删除。我仍然认为需要在目录中放置一个AsEnumerable()。@AZ
AsEnumerable()
added。
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));