我有以下架构:
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>>
答案 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));