我目前有工作代码
foreach (var item in list)
{
item.Property1= SomeFunction(item.Property1);
}
return list;
我想将其转换为LINQ查询,但是我不太确定该怎么做。我怀疑我需要使用.Select,但是我不确定如何正确执行此操作。我的尝试是尝试:
return list.Select(r => SomeFunction(r.Property1));
但是当然只返回属性的集合,而我想要一个原始对象的集合,其中具有更改后的属性。
答案 0 :(得分:2)
我认为一般来说这可能是个坏主意,但是您可以...
您想要类似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#交互式外壳):
Enumerable.WhereSelectListIterator<Submission#9.A, Submission#9.A> { Submission#9.A { Data=6 }, Submission#9.A { Data=10 } }
答案 1 :(得分:0)
假设list
类型为List<>
:
list.ForEach(x => x.Property1 = SomeFunction(item.Property1));
但是foreach
到底有什么问题?