web-dev-qa-db-fra.com

Somme des éléments d'une collection

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.

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 base de données, existe-t-il une méthode simple pour renvoyer la somme du LineTotal directement à partir de la collection?

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

70
Adrian

Vous pouvez faire LINQ to Objects et utiliser LINQ pour calculer les totaux:

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

Vous pouvez également utiliser des expressions lambda pour ce faire, ce qui est un peu "plus propre".

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

Vous pouvez ensuite le connecter à votre classe Order comme ceci si vous le souhaitez:

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