关于linq:集合中项目的总和

关于linq:集合中项目的总和

Sum of items in a collection

使用LINQ to SQL,我有一个Order类,其中包含OrderDetails的集合。 订单明细具有一个名为LineTotal的属性,该属性获取Qnty x ItemPrice。

我知道如何对数据库执行新的LINQ查询以查找订单总额,但是由于我已经从数据库中获得了OrderDetails的集合,是否有一种简单的方法可以直接从集合中返回LineTotal的总和?

我想将订单总计添加为Order类的属性。 我想我可以遍历集合并为每个Order.OrderDetail计算一个总和,但是我猜有更好的方法。


您可以对对象执行LINQ,并使用LINQ计算总数:

1
2
decimal sumLineTotal = (from od in orderdetailscollection
select od.LineTotal).Sum();

您也可以使用lambda-expressions来执行此操作,这有点"干净"。

1
decimal sumLineTotal = orderdetailscollection.Sum(od => od.LineTotal);

然后,您可以按照以下方式将其连接到Order类:

1
2
3
4
5
6
7
8
Public Partial Class Order {
  ...
  Public Decimal LineTotal {
    get {
      return orderdetailscollection.Sum(od => od.LineTotal);
    }
  }
}

推荐阅读