it-swarm.it

Somma di elementi in una raccolta

Usando LINQ to SQL, ho una classe Order con una raccolta di OrderDetails. I dettagli dell'ordine hanno una proprietà chiamata LineTotal che ottiene Qnty x ItemPrice.

So come eseguire una nuova query LINQ del database per trovare il totale dell'ordine, ma poiché ho già la raccolta di OrderDetails dal DB, esiste un metodo semplice per restituire la somma del LineTotal direttamente dalla raccolta?

Vorrei aggiungere il totale dell'ordine come proprietà della mia classe Order. Immagino di poter passare in rassegna la raccolta e calcolare la somma con a per ciascun Ordine.OrderDetail, ma immagino che ci sia un modo migliore.

70
Adrian

Puoi eseguire LINQ to Objects e utilizzare LINQ per calcolare i totali:

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

Puoi anche usare le espressioni lambda per fare questo, che è un po 'più "pulito".

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

Puoi quindi collegarlo alla tua classe d'ordine in questo modo se vuoi:

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