it-swarm-es.tech

Suma de artículos en una colección.

Usando LINQ to SQL, tengo una clase Order con una colección de OrderDetails. Los Detalles del pedido tienen una propiedad llamada LineTotal que obtiene Qnty x ItemPrice.

Sé cómo hacer una nueva consulta LINQ de la base de datos para encontrar el total del pedido, pero como ya tengo la colección de OrderDetails del DB, ¿hay un método simple para devolver la suma del LineTotal directamente desde la colección?

Me gustaría agregar el total del pedido como propiedad de mi clase de pedido. Imagino que podría recorrer la colección y calcular la suma con una para cada Order.OrderDetail, pero supongo que hay una mejor manera.

70
Adrian

Puedes hacer LINQ to Objects y usar LINQ para calcular los totales:

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

También puede usar lambda-expresiones para hacer esto, que es un poco "más limpio".

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

A continuación, puede conectar esto a su clase de orden de esta manera si desea:

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