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

C#技术问题:判断列表含非空元素及统计非空元素的替代方法

嘿,这两个问题在日常C#开发里挺常见的,我来给你详细说说解决方案:

1. 判断List是否包含非空元素

要判断列表里有没有非空元素,用Linq的Any()方法就很方便,它会遍历列表直到找到符合条件的元素,效率也不错:

  • 如果你的列表存的是引用类型(比如自定义类、string等),直接判断元素是否不为null:
    bool hasNonEmpty = myTestList.Any(item => item != null);
    
  • 如果是字符串,还需要排除空字符串/空白字符的话,可以结合string.IsNullOrEmpty()或者string.IsNullOrWhiteSpace()(后者会排除空格、制表符这类空白):
    bool hasNonBlankString = myTestList.Any(s => !string.IsNullOrWhiteSpace(s));
    
  • 如果是可空值类型(比如int?、DateTime?),就用HasValue来判断元素是否有有效值:
    bool hasNonNullValue = myTestList.Any(num => num.HasValue);
    
2. 统计列表中的非空元素(内置替代方案)

当然有现成的内置方法!Linq的Count()支持传入谓词参数,直接帮你统计符合条件的元素数量,完全不用自己写循环逻辑:

  • 统计非null的引用类型元素:
    int nonEmptyCount = myTestList.Count(item => item != null);
    
  • 统计非空(非null且非空白)的字符串:
    int nonBlankStringCount = myTestList.Count(s => !string.IsNullOrWhiteSpace(s));
    
  • 统计有值的可空值类型元素:
    int nonNullValueCount = myTestList.Count(num => num.HasValue);
    

这个方法和你手动实现的逻辑效果完全一致,但代码更简洁易读,而且是.NET内置的Linq方法,性能也经过官方优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:50:28