是否有LINQ方法来修改集合中的项目,例如简单地设置集合中每个项目的属性?像这样的东西:
var items = new []{ new Item { IsActive = true } }
var items = items.Transform(i => i.IsActive = false)
Run Code Online (Sandbox Code Playgroud)
其中Touch枚举每个项目并应用转换.顺便说一句,我知道SELECT扩展方法,但这需要我在进行此转换的类型上公开一个方法并返回相同的引用.
var items = items.Select(i => i.Transform())
Run Code Online (Sandbox Code Playgroud)
其中Item.Transform返回转换并返回相同的实例.
TIA
Jef*_*ado 13
不,标准LINQ中没有允许您修改集合中项目的方法.LINQ用于查询集合,而不是用于引起副作用(例如,改变项目).Eric Lippert在他的博客文章中更详细地介绍了这个想法:"foreach"vs"ForEach".
只需使用一个循环.
foreach (var item in items)
{
item.IsActive = false;
}
Run Code Online (Sandbox Code Playgroud)