我有一些列表(其中 T 是一个自定义类,并且类有一些属性)。我想知道如何使用 Lambda 表达式更改其中的一个或多个值,因此结果将与下面的 foreach 循环相同:
注意:列表中包含多个项目(多行)
foreach (MyClass mc in list)
{
if (mc.Name == "height")
mc.Value = 30;
}
这是 linq 查询(使用 Lambda 表达式),但它与上面的 foreach 循环不同,它只返回列表中的 1 项(一行)!
我想要的是,它返回所有项目(所有行)并且只更改适当的项目(在 WHERE 扩展方法中指定的项目。
list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();
注意:这两个例子不一样!我再说一遍,linq 只返回 1 个项目(一行),这是我不想要的,我也需要列表中的所有项目(比如 foreach 循环,它只做更改,但它不会删除任何项目)。