2008-09-15 18 views
67

LINQ to SQL kullanarak, OrderDetails koleksiyonuna sahip bir Sipariş sınıfına sahibim. Sipariş Detayları, Qnty x ItemPrice alan LineTotal adlı bir özelliğe sahiptir.Koleksiyondaki öğeler toplamı

Sipariş toplamını bulmak için veritabanının yeni bir LINQ sorgusunu nasıl yapacağımı biliyorum, ancak zaten DB'den gelen OrderDetails koleksiyonuna sahip olduğumdan, LineTotal toplamını doğrudan doğruya döndürmek için basit bir yöntem var mı? Toplamak?

Sipariş toplamını, Sipariş sınıfımın bir özelliği olarak eklemek istiyorum. Ben koleksiyon boyunca döngü ve her bir Order.OrderDetail için bir toplam ile hesaplayabilirsiniz hayal edebiliyorum, ama daha iyi bir yol olduğunu tahmin ediyorum.

cevap

151

Sen toplamlarını hesaplamak için Nesneler ve kullanım LINQ to Entities yapabilirsiniz:

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

Ayrıca biraz "daha temiz" olan bu, yapılacak lambda-ifadeleri kullanabilirsiniz.

decimal sumLineTotal = orderdetailscollection.Sum(od => od.LineTotal); 
İsterseniz o zaman böyle Sipariş-sınıfına kanca bu kadar

:

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