linq聚合了嵌套计数

本文关键字:嵌套 linq | 更新日期: 2023-09-27 18:26:26

我有以下类:

class Outer
{
   public ICollection<Inner> Inners
}
class Inner
{
    public ICollection<Inner> Inners
}

我想按路由列表中Inners和嵌套Inners的总数降序排列。

例如:

如果我有2个outer:第一个有3个inner的集合,每个都有1个嵌套的inner,那么总数是5。

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

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

有人吗?:)

linq聚合了嵌套计数

首先,构建一个递归方法来计算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)));