首页 > 解决方案 > 如何使用 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;
            }
        }
    }

标签: c#.netforms

解决方案


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

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

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

如果我是你,我会阅读更多关于 Linq 的内容 - 一些非常简洁的转换,你可以应用一些代码来实现很多目标 - 尝试从“选择”和“在哪里”开始。


推荐阅读