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

C#如何使用Lambda表达式简化请求响应数据匹配筛选代码

C# Lambda表达式简化集合筛选实现

完全可以通过LINQ Lambda表达式替代手写foreach+硬编码判断的逻辑,代码更简洁,也更容易维护。

实现注意事项

  • 提前引入LINQ命名空间:using System.Linq;
  • 响应返回的两类数据对象存储校验数组的字段名不同(一类为array、一类为agreements),需要做兼容处理,避免空引用异常
  • 校验前先判断数组长度≥4,避免索引越界报错
  • 核心匹配规则:数组前4个元素的Value属性,依次与参数字典中键为"7"/"8"/"9"/"10"的值做等值比较

代码实现

版本1:完全对齐原有硬编码逻辑

直接按索引取前4位做匹配,和你现有逻辑完全一致,性能更高:

// 核心筛选逻辑直接链式调用完成,无需手写foreach循环和逐行Add操作
List<user_model> list2 = list
    .Where(user =>
    {
        // 兼容两种数组字段,空值兜底为空数组
        var targetArr = user.array ?? user.agreements ?? Array.Empty<CodeItem>();
        // 长度不足直接判定不匹配
        if (targetArr.Length < 4) return false;
        // 依次匹配对应位置的值
        return targetArr[0].Value == param["7"]
            && targetArr[1].Value == param["8"]
            && targetArr[2].Value == param["9"]
            && targetArr[3].Value == param["10"];
    })
    .ToList();

上述代码中CodeItem是你定义的携带GroupID/CodeID/Value属性的数组项实体类,替换成你项目里的实际类名即可。

版本2:高鲁棒性优化版

不依赖数组的返回顺序,直接按CodeID匹配固定的ONE/TWO/THREE/FOUR四个条目做校验,哪怕后续接口调整数组内条目顺序,也不会出现匹配错误,更适合生产环境使用:

List<user_model> list2 = list
    .Where(user =>
    {
        var targetArr = user.array ?? user.agreements ?? Array.Empty<CodeItem>();
        // 按CodeID查找对应校验项
        var itemOne = targetArr.FirstOrDefault(i => i.CodeID == "ONE");
        var itemTwo = targetArr.FirstOrDefault(i => i.CodeID == "TWO");
        var itemThree = targetArr.FirstOrDefault(i => i.CodeID == "THREE");
        var itemFour = targetArr.FirstOrDefault(i => i.CodeID == "FOUR");
        // 任意一个固定项不存在直接判定不匹配
        if (itemOne == null || itemTwo == null || itemThree == null || itemFour == null)
            return false;
        // 匹配对应参数值
        return itemOne.Value == param["7"]
            && itemTwo.Value == param["8"]
            && itemThree.Value == param["9"]
            && itemFour.Value == param["10"];
    })
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:30:51