如何对泛型列表中的项目求和<;T>

本文关键字:求和 lt gt 项目 泛型 列表 | 更新日期: 2023-09-27 18:00:54

以下泛型列表如何通过总成本进行汇总?这意味着有可能将下面的两个成本相加得到一个总数吗?

型号:

public class Product
{
      public string Name {get;set;}
      public int Cost  {get;set;}
}

现在我想在通用列表中使用该模型,如下所示:

public void GetTotal()
{
     IList<Product> listOfJediProducts = new List<Product>();
     Product newProduct1 = new Product();
     newProduct1.Name = "LightSaber";
     newProduct1.Cost = 1500;
     listOfJediProducts.Add(newProduct1);
     Product newProduct2 = new Product();
     newProduct2.Name = "R2RobotSpec9";
     newProduct2.Cost = 5000;
     listOfJediProducts.Add(newProduct2);
 }

我该如何返回列表中产品的合计?

如何对泛型列表中的项目求和<;T>

listOfJediProducts.Sum(p => p.Cost);

这将在序列中的每个元素上运行选择器lambda表达式(在这种情况下返回Cost(。Sum函数然后在"隐式返回"的IEnumerable上运行,它显然会计算和并返回它

值得注意的是,上面类似于写作:

listOfJediProducts.Select(p => p.Cost).Sum();

在理解我的第一个例子的作用时,这可能会更加明显(如果不是冗长的话(。

我说"隐式返回"是因为Sum只对IEnumerable数字有意义,内部工作可能更接近于此:

int total;
foreach (Product p in listOfJediProducts)
   total += p.Cost;
return total;

else,使用foreach循环

int total_cost = 0;
foreach (Product p in listOfJediProducts)
{
 total_cost+= p.cost;
}