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

时间:2014-10-29 18:11:39

标签: c# linq

它们之间的关系是许多期刊的一个订单。现在,我希望得到所有待处理订单(或false实体中IsDelivered下标记为Order的记录)的总和。

到目前为止,我有这个问题,但在添加.Sum()

时似乎无法正常工作

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

到目前为止,结果是:

简而言之,我怎样才能得到它们的总和?如果需要更改查询或应该是新查询。很受欢迎。任何帮助将非常感激。谢谢!

2 个答案:

答案 0 :(得分:4)

您可以通过多种方式实现:

  • 您可以在查询末尾添加Sum(n => n.pendingOrders)以添加值,或
  • 您可以在SelectMany之前使用Select,并使用Sum代替Select

这两种方法中的任何一种都可以起作用。

答案 1 :(得分:3)

在这种情况下,最简单的方法是使用SelectManyMSDN)来展平您的馆藏,然后使用Sum

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