2008-09-15 8 views
67

En utilisant LINQ to SQL, j'ai une classe Order avec une collection de OrderDetails. Les détails de la commande ont une propriété appelée LineTotal qui obtient Qnty x ItemPrice.Somme des éléments d'une collection

Je sais comment faire une nouvelle requête LINQ de la base de données pour trouver le total de la commande, mais comme j'ai déjà la collection de OrderDetails de la DB, existe-t-il une méthode simple pour retourner la somme du LineTotal directement? collection?

Je voudrais ajouter le total de la commande en tant que propriété de ma classe de commande. J'imagine que je pourrais boucler la collection et calculer la somme avec un pour chaque Order.OrderDetail, mais je suppose qu'il y a un meilleur moyen.

Répondre

151

Vous pouvez faire LINQ aux objets et LINQ utiliser pour calculer les totaux:

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

Vous pouvez également utiliser des expressions lambda à faire, ce qui est un peu plus « propre ».

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

Vous pouvez brancher jusqu'à présent à votre commande de classe comme si vous voulez:

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