it-swarm-ru.tech

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

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

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

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

70
Adrian

Вы можете сделать LINQ to Objects и использовать 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);
    }
  }
}
156
Espo