如何检查列表无空值?并修改LINQ代码先校验t.User非空
问题解答
一、检查列表中不存在空值的方法
分两种常见场景:
- 检查列表本身不为
null,且列表所有元素本身都不为null:bool hasNoNullElements = clientIds != null && !clientIds.Any(item => item == null); - 检查列表本身不为
null,且列表所有元素的User属性都不为null:bool hasNoNullUser = clientIds != null && !clientIds.Any(item => item.User == null);
二、修改判断代码的方案
你原来的代码需要先校验t.User不为null,避免访问t.User.Email时出现空引用异常,只需在Any的条件中增加t.User != null的判断,利用C#的短路逻辑(&&会先判断左侧,若为false则直接返回,不会执行右侧)即可,修改后的代码如下:
var listA = (clientIds == null || !clientIds.Any(t => t.User != null && t.User.Email == userBody.Email));
逻辑说明:
- 先判断
clientIds是否为null,如果是则直接返回true(和原逻辑一致); - 若
clientIds不为null,则遍历列表,只有当t.User不为null且Email匹配时,Any才会返回true; !Any(...)表示列表中没有符合条件的元素,最终赋值给listA,完全保留原逻辑的同时避免了空引用风险。
内容的提问来源于stack exchange,提问作者Angela
相关产品推荐
相关产品推荐

