Question

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

J'aimerais 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 existe un meilleur moyen.

Était-ce utile?

La solution

Vous pouvez utiliser 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, ce qui est un peu "plus propre".

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

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

Public Partial Class Order {
  ...
  Public Decimal LineTotal {
    get {
      return orderdetailscollection.Sum(od => od.LineTotal);
    }
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top