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

C#中是否有简洁写法替代空值或指定值的筛选判断?

针对C# Linq筛选逻辑的简洁写法

原代码逻辑是筛选出x.a.b为null或者等于指定整数值desiredIntValue的元素,这里提供几种更简洁巧妙的写法:

  • 利用C# 9+的逻辑或模式匹配
    这是最简洁的写法,直接通过模式匹配表达逻辑:

    list.Where(x => x.a.b is null or desiredIntValue)
    

    注意:该写法要求项目使用C# 9.0及以上版本,模式匹配语法让代码可读性和简洁性都很强。

  • 使用集合包含判断
    如果你需要兼容更低版本的C#,可以把目标值(包括null)放入一个可空整数集合,通过Contains方法判断:

    list.Where(x => new int?[] { null, desiredIntValue }.Contains(x.a.b))
    

    这里明确声明集合类型为int?[],避免类型不匹配的问题,写法直观易懂。

  • 封装为扩展方法(适合复用场景)
    如果这个判断逻辑在代码中多次出现,建议封装成可空整数的扩展方法,提升代码复用性和可读性:

    public static class NullableIntExtensions
    {
        public static bool IsNullOrEqualTo(this int? nullableInt, int targetValue)
        {
            return nullableInt == null || nullableInt == targetValue;
        }
    }
    

    之后就可以这样调用:

    list.Where(x => x.a.b.IsNullOrEqualTo(desiredIntValue))
    

补充说明:如果x.a本身可能为null,原代码会抛出空引用异常,此时需要先处理a的空值情况,比如调整为x.a?.b is null or desiredIntValue(模式匹配写法)或者x.a?.b == null || x.a?.b == desiredIntValue。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:50:02