如何在LINQ中返回Null?解决空参数引发的异常问题
解决方案
问题出在当type为null时,调用string.Contains(null)会抛出ArgumentNullException;另外如果列表中的元素x本身是null,调用x.Contains也会触发空引用异常。要实现“找不到对应值时返回null”且避免异常,你可以修改LINQ表达式,同时处理type和列表元素的null情况:
var ismatch = list.FirstOrDefault(x => (type == null && x == null) || (type != null && x != null && x.Contains(type))); if (ismatch != null) { // 找到匹配项的逻辑 } else { // 未找到匹配项的逻辑 }
逻辑说明
- 当
type为null时,匹配列表中第一个为null的元素; - 当
type不为null时,先确保列表元素x不为null,再调用x.Contains(type)进行匹配; - 无论哪种情况,当没有匹配到任何元素时,
FirstOrDefault都会返回null,完全符合你的需求。
你也可以拆分成更易读的分支写法:
var ismatch = type == null ? list.FirstOrDefault(x => x == null) : list.FirstOrDefault(x => x != null && x.Contains(type));
内容的提问来源于stack exchange,提问作者Traci
相关产品推荐
相关产品推荐

