.NET 8中如何用一行代码安全修改FirstOrDefault匹配对象的属性?
解决方案
针对你的需求,在.NET 8环境下有两种简洁的一行代码实现方式,都能避免空引用异常:
方案一:利用null条件运算符简化赋值
_ = request.Order.FirstOrDefault(x => x.Name == "From")?.Name = "FromDate";原理:
FirstOrDefault找不到匹配项时返回null,?.会直接终止后续操作,不会执行赋值;找到匹配项时正常修改Name属性。用_接收表达式返回值,避免编译器警告。方案二:筛选后批量处理(支持多个匹配项)
request.Order.Where(x => x.Name == "From").ToList().ForEach(x => x.Name = "FromDate");原理:
Where先筛选出所有Name为"From"的元素(无匹配则返回空集合),转成List后调用ForEach执行赋值操作,空集合不会触发任何修改,自然避免空引用问题。如果存在多个符合条件的元素,这个方案会一次性修改所有匹配项。
内容的提问来源于stack exchange,提问作者Diego Perez
相关产品推荐
相关产品推荐

