使用linq更新对象列表背后的逻辑
本文关键字:背后 列表 linq 更新 对象 使用 | 更新日期: 2023-09-27 18:09:17
我有一个POCO对象列表,为什么下面的代码:
elements.Where(x => x.Param1 == "M").Select(x => x.Param2= "").ToList();
(TL,博士;set param2 = "
更新可枚举对象,而下面的
elements.Where(x => x.Param1 == "M").Select(x => x.Param2= "");
不更新吗?
注意我既不做elements = elements.Where...
也不做var results = elements.Where...
没有ToList
的第二个代码片段只是一个查询。你需要迭代才能真正执行它。调用ToList
执行原始查询,并且由于在Select
中您正在修改对象的属性,因此您可以在原始列表中看到效果(或副作用)。它与c# 中的参数传递有关。因为你的lambda表达式在Select
是一个匿名的方法,它正在接收列表的参数对象。稍后,当你修改它的一个属性时,你会看到效果。
null
,则不会看到副作用。.Select(x => x = null).ToList();