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

如何根据IsActiveFlag合并C# Linq逻辑,避免查询重复代码?

重构方案:合并重复逻辑

直接把重复的查询逻辑抽离,用条件动态控制过滤规则,代码更简洁:

// 先把重复访问的参数存成变量,减少重复书写
var inputParams = engDetails.TransitionDetails.InputParametersJson;

// 处理ComponentEngagements集合
if (inputParams.CompEngagements != null)
{
    var compEngQuery = inputParams.CompEngagements;
    // 仅当需要过滤时,添加状态判断
    if (IsActiveOnly)
    {
        compEngQuery = compEngQuery.Where(x => x.Status.CaseInsensitiveEquals("Ready"));
    }
    tarEngagementIds.AddRange(compEngQuery.Select(x => x.TargetEngagementId).ToList());
}

// 处理单个TargetEngagementId
// 逻辑:要么不需要过滤,要么需要过滤且状态为Ready
if (!IsActiveOnly || inputParams.Status.CaseInsensitiveEquals("Ready"))
{
    tarEngagementIds.Add(inputParams.TargetEngagementId);
}

重构思路:

  • 把重复访问的InputParametersJson提取成局部变量,避免多次链式调用,提升可读性和性能
  • 集合处理部分:先拿到原始集合,再根据IsActiveOnly决定是否添加状态过滤,不用写两遍几乎一样的AddRange逻辑
  • 单个ID部分:用逻辑或(||)合并两种分支的判断条件,把原来if-else里的两个添加操作合并成一个,减少分支嵌套

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:33:13