You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ表达式精简检查所有子行是否全部展开的代码?

用LINQ精简递归节点展开检查代码

你可以用LINQ的Where和All方法结合空值传播操作符,把原代码的循环逻辑精简成一行表达式,同时完全保留原有的判断逻辑:

public bool AllChildRowsExpanded()
{
    return IsExpanded 
           && (ContainedRows?.Where(row => row.ContainedRows?.Any() ?? false)
                             .All(row => row.AllChildRowsExpanded()) ?? true);
}

对应原代码的逻辑说明:

  • 开头的IsExpanded直接对应原代码中"当前节点未展开则返回false"的判断
  • ContainedRows?.Where(row => row.ContainedRows?.Any() ?? false):
    • 用?.处理ContainedRows为null的情况,避免空引用异常
    • 过滤出有子节点的行,对应原代码中跳过无子节点行的逻辑
  • .All(row => row.AllChildRowsExpanded()):检查所有符合条件的子节点都递归满足"全部子节点展开"的要求,只要有一个不满足就返回false,对应原代码循环中一旦发现不满足就返回false的逻辑
  • ?? true:当ContainedRows为null,或者没有需要检查的子节点时,直接返回true,对应原代码循环结束后返回true的情况

内容的提问来源于stack exchange,提问作者Jaime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:01:24