linq聚合嵌套计数

2024-03-26

我有以下课程:

class Outer
{
   public ICollection<Inner> Inners
}

class Inner
{
    public ICollection<Inner> Inners
}

我想按内部和嵌套内部的总数对外部列表进行降序排序。

例如:

如果我有 2 个外部:第一个有 3 个内部的集合,每个内部有 1 个嵌套的内部,那么总数为 5。

例如,第二个可以有 2 个内部的集合,每个内部有 3 个嵌套的内部 总计数为 2 + 3 + 3 = 8

因此,在返回的结果中,第二个示例应该是第一个示例。

任何人? :)


首先,构建一个递归方法来计算 a 中的内部对象Inner对象包括其自身:

public static int Count(Inner inner)
{
    var count = 1;
    if (inner.Inners != null && inner.Inners.Any())
       count += inner.Inners.Sum(x => Count(x));

    return count;
}

然后您可以订购:

var result = outers.OrderBy(o => o.Inners.Sum(i => Count(i)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linq聚合嵌套计数 的相关文章

随机推荐