我想改变一个LINQ查询结果对象的一些属性,而不需要创建一个新的对象和手动设置每个属性。这可能吗?
例子:
var list = from something in someList
select x // but change one property
我想改变一个LINQ查询结果对象的一些属性,而不需要创建一个新的对象和手动设置每个属性。这可能吗?
例子:
var list = from something in someList
select x // but change one property
当前回答
在2020年,我使用MoreLinq管道方法。https://morelinq.github.io/2.3/ref/api/html/M_MoreLinq_MoreEnumerable_Pipe__1.htm
其他回答
在2020年,我使用MoreLinq管道方法。https://morelinq.github.io/2.3/ref/api/html/M_MoreLinq_MoreEnumerable_Pipe__1.htm
使用ForEach
var list = from something in someList;
list.ForEach(x => x.Property = value);
我更喜欢这个。它可以与其他linq命令组合使用。
from item in list
let xyz = item.PropertyToChange = calcValue()
select item
不应该有任何LINQ魔法阻止你这样做。不要使用投影,那会返回一个匿名类型。
User u = UserCollection.FirstOrDefault(u => u.Id == 1);
u.FirstName = "Bob"
这将修改真实对象,以及:
foreach (User u in UserCollection.Where(u => u.Id > 10)
{
u.Property = SomeValue;
}
如果你只是想更新所有元素的属性,那么
someList.All(x => { x.SomeProp = "foo"; return true; })