Summe der Elemente in einer Sammlung

72

Mit LINQ to SQL habe ich eine Order-Klasse mit einer Sammlung von OrderDetails. Die Bestelldetails haben eine Eigenschaft namens LineTotal, die Qnty x ItemPrice erhält.

Ich weiß, wie eine neue LINQ-Abfrage der Datenbank durchgeführt wird, um die Auftragssumme zu ermitteln. Gibt es jedoch eine einfache Methode, um die Summe der LineTotal direkt aus der Sammlung zurückzugeben, da ich bereits über die Sammlung von OrderDetails aus der Datenbank verfüge?

Ich möchte die Bestellsumme als Eigenschaft meiner Bestellklasse hinzufügen. Ich stelle mir vor, ich könnte die Sammlung durchlaufen und die Summe mit a für jede Bestellung berechnen. OrderDetail, aber ich vermute, es gibt einen besseren Weg.

Adrian
quelle

Antworten:

159

Sie können Objekte mit LINQ bearbeiten und die Gesamtsummen mit LINQ berechnen:

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

Sie können dazu auch Lambda-Ausdrücke verwenden, was etwas "sauberer" ist.

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

Sie können dies dann wie folgt an Ihre Order-Klasse anschließen, wenn Sie möchten:

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