asp.net 复杂嵌套对象的字典

vlf7wbxs  于 2022-12-01  发布在  .NET
关注(0)|答案(2)|浏览(184)

我有这样的DTO

public class Obj1
{
    public string a1 { get; set; };
    public Obj2[] a2 { get; set; };
}
public class Obj2
{
    public string b1 { get; set; };
    public Obj3[] b2 { get; set; };
}
public class Obj3
{
    public string Key  { get; set; };
}

这样,物体就会像

Obj1 o = new Obj1
{
    a1="a";
    a2=new[]
    {
        new Obj2
        {
            b1="b";
            b2=new[]
            {
                new Obj3
                {
                   Key="c";
                }
            }
        }
    }
}

我有Obj1。我如何将它分组为类型字典的形式

IDictionary<string, IEnumerable<Obj2>>

其中Key位于Obj3中。
我尝试使用GroupBy,但没有得到相关结果。

lb3vh1jj

lb3vh1jj1#

如果我理解最终目标--通过所有子Obj3.Key合并所有Obj2,并且在修复代码使其编译后,您可以使用SelectMany到中间数据结构中,并与GroupBy聚合:

var dictionary = o.a2
    .SelectMany(o2 => o2.b3.Select(o3 => (o3.Key, o2)))
    .GroupBy(t => t.Key)
    .ToDictionary(g => g.Key, g => g.ToList());
bhmjp9jg

bhmjp9jg2#

我不是很确定,但是你的类“obj2”不是有两个属性,你可以用Dictionary的一个属性,一个字符串键和Ienumerable值,这样你的变量看起来就像这样。Dictionary〈string,Dictionary〈string,Ienumerable〉〉,你可以添加“obj3”作为一个值或键。

相关问题