2014-10-29 4 views
1

Отношения между ними - это один заказ для многих журналов. Теперь я хочу получить сумму всех отложенных ордеров (или записей, помеченных как false под номером IsDelivered в Order).Linq, используя сумму() в списке в списке

До сих пор у меня есть этот запрос, но не могу показаться, чтобы получить работу, когда я добавить .Sum()

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

До сих пор это приводит к:

В двух словах, как я могу получить их сумма? Если запрос нужно изменить или должен быть новым. Добро пожаловать. Любая помощь приветствуется. Благодаря!

ответ

4

Вы можете сделать это несколькими способами:

  • Вы можете добавить Sum(n => n.pendingOrders) в конец вашего запроса, чтобы добавить значения, или
  • Вы можете использовать SelectMany до Select и использовать Sum вместо Select.

Любой из двух подходов будет работать.

3

В этом случае проще всего использовать SelectMany (MSDN), чтобы сгладить свои коллекции, а затем использовать Sum:

Orders.Where(o => !o.IsDelivered).SelectMany(o => o.Journals).Sum(j => j.TotalAmount); 
Смежные вопросы