如何使用Lambda表达式重写此计算属性



我现在正在学习C#.net。有人要求我将此计算属性更改为lambda表达式。我被困在这里很长一段时间了,请帮帮我。

public class ClientList : BindingList<Client>
{
public decimal TotalSales
{
get
{
decimal totalSales = 0.00m;
for (int i = 0; i < this.Count(); i++)
{
totalSales += this[i].Sales;
}
return totalSales;
}
}
}

LINQ是您的朋友。使用Sum((函数,您可以在"this"BindingList:中的所有元素上应用投影

return this.Sum(i => i.Sales);

这意味着-检查"this"列表中的每个项目,并对Sales属性进行"sum"。您可能必须"使用System.Linq;"。这是假设Sales已经是一个十进制属性。

如果我是你的话,我会阅读更多关于Linq的内容——一些非常巧妙的转换,你可以用一点代码实现很多——试着从"Select"one_answers"Where"开始。

decimal totalSales = 0.00m;
this.ForEach(x => totalSales += x.Sales);

但还有另一种更像林奇的方式。你想自己做吗?

最新更新