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

如何在.Where()函数中使用内联if条件替代IF-Else,避免列表空值报错

你可以直接在LINQ的条件中新增集合空校验逻辑,内联写法如下:

q = q.Where(s => 
    (matchingRecords == null || !matchingRecords.Any() || !matchingRecords.Contains(s.Id))
    || (s.SecId != null)
);

逻辑说明

  • 新增的matchingRecords == null || !matchingRecords.Any()判断命中时(即集合为null或无元素),整个左半部分条件直接成立,相当于跳过Contains校验逻辑
  • 只有当matchingRecords非空且包含元素时,才会执行后续的!matchingRecords.Contains(s.Id)判断
  • 原有|| (s.SecId != null)的业务逻辑完全保留,不会改动原有规则

如果你的查询是作用于EF Core等ORM的IQueryable对象,担心部分数据库提供程序无法翻译集合的Any()判断,可以用更兼容的简化写法,空判断逻辑不变:

q = q.Where(s => 
    (matchingRecords?.Any() != true || !matchingRecords.Contains(s.Id))
    || s.SecId != null
);

matchingRecords?.Any() != true同时覆盖了集合为null、集合无元素两种场景,写法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:09:03