c# - LINQ:如何通过对每个元素执行计算来转换列表

标签 c# linq sum transform

我有课

Class MyObject
{
    decimal v1;
    decimal dv1;
    decimal v2;
    decimal dv2;
}

和一个

List<MyObject> ...

我需要通过将 dv1 添加到 v1 并将 dv2 添加到 v2 来处理列表中的每个元素 类似于(伪语法):

myList.Transform(o=>o.v1+=o.dv1, o.v2+=o.dv2)

我该怎么做(显然我的伪语法不起作用)?

谢谢

最佳答案

LINQ 用于获取给定枚举的子集或使用列表中的新类型创建枚举。

要操作给定列表,LINQ 不是操作给定列表的正确工具。要完成你的任务,你应该像这样进行 foreach 循环

foreach(var item in objects)
{
    item.v1 += obj.dv1;
}

你可以做的是预先选择,通过这样的方式从你想要的对象中选择哪些元素

foreach(var item in object.Where(o => o.v1 % 2 == 0))

就像其他人提到的那样,您可以自己实现一个 ForEach() 扩展方法,但它不存在是有原因的:
看看Erics Blog entry .

关于c# - LINQ:如何通过对每个元素执行计算来转换列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2995516/

相关文章:

MySQL 使用 Group By 多列求和

c# - 从 .Net Framework 4.7 升级到 4.8 后使用 MSBuild 发布项目时出错

c# - Windows 窗体中的提示对话框

c# - 如何通过WMVVM将WPF数据网格绑定(bind)到包含组合框和测试框组合的列

c# - 具有多个连接的 Linq 查询未给出正确的结果

java - LINQ 的 Java 等价物是什么?

c# - 将对象序列化到 Azure Blob 存储

c# - 使用 Linq to Entities 实现 DateTime.ToString(string)

MySQL : finding MAX of SUM values?

sql - 将 ROW_NUMBER() 与聚合函数一起使用