LINQ查询返回具有转换属性的原始对象的集合

时间:2018-11-28 16:25:00

标签: c# linq

我目前有工作代码

foreach (var item in list)
{
    item.Property1= SomeFunction(item.Property1);
}

return list;

我想将其转换为LINQ查询,但是我不太确定该怎么做。我怀疑我需要使用.Select,但是我不确定如何正确执行此操作。我的尝试是尝试:

return list.Select(r => SomeFunction(r.Property1));

但是当然只返回属性的集合,而我想要一个原始对象的集合,其中具有更改后的属性。

2 个答案:

答案 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到底有什么问题?