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

LINQ技巧:输入参数为Null时如何排除CONTAINS谓词条件?

修正后的LINQ查询实现

首先修正原代码中的关键错误,并实现"参数为Null时忽略对应条件"的逻辑:

// 假设input是包含Key和Value属性的查询参数对象
query.Where(card => card.Attributes.Any(attribute =>
    // 首先判断属性是否可搜索(注意原定义中Searchable是string类型,需匹配字符串"true")
    attribute.Searchable == "true"
    // 当input.Key不为Null时,检查Key是否包含输入值;Null时跳过该条件
    && (input.Key == null || attribute.Key.Contains(input.Key))
    // Value条件逻辑与Key完全一致
    && (input.Value == null || attribute.Value.Contains(input.Value))
));

核心逻辑说明

  • 修正赋值错误:原代码中attribute.Searchable = true是赋值操作,改为判断相等的attribute.Searchable == "true"(如果你的Searchable实际是bool类型,直接写attribute.Searchable即可)。
  • 条件组合规则:用&&串联所有必要条件,确保只有同时满足"可搜索" + "符合非Null的输入参数条件"的属性才会被匹配。
  • Null参数处理:采用(参数为Null || 条件成立)的模式,当输入参数为Null时,该分支直接返回true,相当于忽略此条件;参数非Null时才会执行后续的Contains检查。

可选优化

如果需要忽略大小写的匹配,可以给Contains方法传入字符串比较参数:

attribute.Key.Contains(input.Key, StringComparison.OrdinalIgnoreCase)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:29:56