2008-09-15 18 views
67

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

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

Me gustaría agregar el total del pedido como una propiedad de mi clase de pedido. Me 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.

Respuesta

151

Usted puede hacer LINQ a objetos y el uso de LINQ para calcular los totales:

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

También puede utilizar expresiones lambda para hacer esto, que es una "limpia" bits.

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

A continuación, puede conectar esto a su clase de pedido de este tipo si desea:

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