如何使用LINQ和C#使用List更新元素

Add*_*die 13 .net c# linq ienumerable linq-to-objects

我有一个对象列表,我想更新其中一个对象中的特定成员变量.我知道LINQ是专为查询而设计的,并不意味着更新不可变数据列表.实现这一目标的最佳方法是什么?如果效率不高,我不需要使用LINQ作为解决方案.

创建Update扩展方法是否有效?如果是这样,我该怎么做呢?

EXAMPLE:
(from trade in CrudeBalancedList
 where trade.Date.Month == monthIndex
 select trade).Update(
 trade => trade.Buy += optionQty);
Run Code Online (Sandbox Code Playgroud)

Pat*_*her 30

尽管linq并不是要更新不可变数据的列表,但是获取要更新的项目非常方便.我想你会这样:

(from trade in CrudeBalancedList
    where trade.Date.Month == monthIndex
    select trade).ToList().ForEach( trade => trade.Buy += optionQty);
Run Code Online (Sandbox Code Playgroud)

  • 在调用ToList()方法时,有一个符合条件的交易对象列表.此列表没有变量,因此只要执行此行,它就会成为垃圾收集的目标.如果您想要使用此列表而不仅仅是[trade.Buy + = optionQty],那么您可能希望将这行代码分离到其他几个代码中.首先定义并设置一个变量,如下所示:List <trade> monthlyCrudeBalancedList =(来自交易等等)然后下一行:monthlyCrudeBalancedList.ForEach(trade =>等等.然后,你有一个对新列表的引用. (2认同)