c# - 使用 Linq 计算父对象

标签 c# linq

我对使用 linq 表达式和尝试重构一些旧代码还很陌生。有没有办法将下面的方法变成一个简短干净的 Linq 表达式?

public int GetParentCount(object o)
{ 
    int count = 0;
    object parent = GetParentObject(o);
    while (parent != null)
    {
        count++;
        parent = GetParentObject(parent);
    }
    return count;
}

我试过搜索但没有得到满意的结果

最佳答案

你可以像这样枚举祖先:

public IEnumerable<MyClass> AncestorsOf(MyClass obj)
{
   var parent = GetParentObject(obj);
   if (parent != null)
   { 
       yield return parent;
       foreach(var grandparent in AncestorsOf(parent))
          yield return grandparent;
   }
}

获取总计数将是一个简单的 AncestorsOf(obj).Count()

关于c# - 使用 Linq 计算父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837054/

相关文章:

c# - 如何为生成一系列匿名类型的 linq 查询声明全局变量

c# - 如何使用异步任务获取数据并在 View 中显示?

c# - 使用 LINQ 生成 XML 时如何从元素中删除 xmlns?

c# - LINQ问题我想获取每个寄存器的表的最后记录

c# - 模拟 IOrganizationService (Dynamics CRM) 时未过滤 LINQ 查询结果

c# - View 模型应该如何与存储库通信?

c# - C# 中的变量 - 函数执行后取消设置?

c# - Entity Framework 迁移未检测到任何更改

c# - LINQ 中的连接字符串和数据上下文

c# - LINQ 查询中的 If Else 决策