在列表中的列表中使用sum()执行Linq



它们之间的关系是一个订单对多个日记账。现在我想得到所有挂起的订单(或Order实体中IsDelivered下标记为false的记录)的总和。

到目前为止,我有这个查询,但当我添加.Sum() 时似乎无法工作

Orders .Where(o => o.IsDelivered == false) .Select(o => new { pendingOrders = o.Journals.Sum(j => j.TotalAmount) })

到目前为止,这个结果是:

简而言之,我怎样才能得到它们的总和?若查询需要更改或应该是新的查询。这是受欢迎的。任何帮助都将不胜感激。谢谢

您可以通过以下几种方式实现:

  • 您可以将Sum(n => n.pendingOrders)添加到查询的末尾以将值相加,或者
  • 您可以在Select之前使用SelectMany,也可以使用Sum而不是Select

这两种方法中的任何一种都会奏效。

在这种情况下,最简单的方法是使用SelectMany(MSDN)来压平集合,然后使用Sum:

Orders.Where(o => !o.IsDelivered).SelectMany(o => o.Journals).Sum(j => j.TotalAmount);

最新更新