Сумма предметов в коллекции

Используя LINQ to SQL, у меня есть класс Order с коллекцией OrderDetails. Детали заказа имеют свойство, называемое LineTotal, которое получает Qnty x ItemPrice.

Я знаю, как выполнить новый запрос LINQ для базы данных, чтобы найти общую сумму заказа, но поскольку у меня уже есть коллекция OrderDetails из БД, есть простой способ вернуть сумму LineTotal непосредственно из коллекции

Я хотел бы добавить общую сумму заказа в качестве свойства моего класса Order. Я предполагаю, что я мог бы прокрутить коллекцию и вычислить сумму с помощью для каждого Order.OrderDetail, но я предполагаю, что есть лучший способ.

Ответ 1

Вы можете использовать LINQ для объектов и использовать LINQ для вычисления итогов:

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

Вы также можете использовать лямбда-выражения для этого, что немного "чище".

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

Затем вы можете подключить это к своему классу Order, если хотите:

Public Partial Class Order {
  ...
  Public Decimal LineTotal {
    get {
      return orderdetailscollection.Sum(od => od.LineTotal);
    }
  }
}