我目前有工作代码
foreach (var item in list)
{
item.Property1= SomeFunction(item.Property1);
}
return list;
我想将其转换为LINQ查询,但不太确定如何转换。我怀疑我需要使用.Select,但不确定如何正确执行。我的尝试是尝试:
return list.Select(r => SomeFunction(r.Property1));
但当然,这只返回了一个Properties的集合,而我想要一个原始对象的集合,其中包含一个更改的属性
总的来说,我认为这可能是个坏主意,但现在开始。。。
您想要类似list.Select(x => { SomeFunction(x); return x; });
的东西,其中SomeFunction
是一个转换所需属性的函数。
完整示例:
public class A { public int Data { get; set; } }
public void SomeFunction(A a)
{
a.Data *= 2;
}
var listy = new List<A>() {
new A() { Data = 3 },
new A() { Data = 5 }
};
listy.Select(x => { SomeFunction(x); return x; })
输出(C#交互式shell(:
Enumerable.WhereSelectListIterator<Submission#9.A, Submission#9.A> { Submission#9.A { Data=6 }, Submission#9.A { Data=10 } }
假设list
类型为List<>
:
list.ForEach(x => x.Property1 = SomeFunction(item.Property1));
但是foreach
到底出了什么问题?