71 votes

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, y a-t-il une méthode simple pour retourner la somme du LineTotal directement de la collection ?

J'aimerais ajouter le total de la commande comme propriété de ma classe Order. J'imagine que je pourrais parcourir la collection en boucle et calculer la somme avec un for each Order.OrderDetail, mais je suppose qu'il existe une meilleure méthode.

157voto

Espo Points 24318

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 relier à votre classe d'ordre comme ceci si vous voulez :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X