joh*_*y 5 0 c# linq dictionary
我要创建一个在父ID中匹配的LINQ中的字典字典.
我有一个数据模型
Pseudo-Model:
Int ID;
Int Namel
Int? ParentID;
Run Code Online (Sandbox Code Playgroud)
我想创建一个Dictonaries字典.第一个Dictionary是那些只是父级的字典,而带有-in的字典将包含ID,Name.
我知道我可以通过循环来做到这一点,但我想知道如何通过LINQ来做到这一点.
D S*_*ley 11
GroupBy创建IGrouping一个Key值,您可以迭代(或进行其他LINQ调用).
ToDictionary需要两个选择器 - 一个用于键,一个用于值.外部字典的关键是ParentID,值是另一个字典,其关键是ID和值Name.
假设它ID是唯一的(至少在一个ParentID组中),你可以这样做:
_model.Terrtories
.GroupBy(i => i.ParentID.HasValue ? i.ParentID.Value : 0)
.ToDictionary(g => g.Key, // outer dictionary key
g => g.ToDictionary(i => i.ID, // inner dictionary key
i => i.Name)); // inner dictionary value
Run Code Online (Sandbox Code Playgroud)
请注意,外部的第二个参数ToDictionary是将每个组中的项目转换为内部字典.