2008-09-15 7 views
67

Sử dụng LINQ to SQL, tôi có một lớp Order với một tập hợp các OrderDetails. Chi tiết đơn đặt hàng có thuộc tính có tên LineTotal nhận được Qnty x ItemPrice.Tổng số mục trong bộ sưu tập

Tôi biết cách thực hiện truy vấn LINQ mới của cơ sở dữ liệu để tìm tổng số đơn đặt hàng, nhưng khi tôi đã có bộ sưu tập OrderDetails từ DB, có phương pháp đơn giản để trả lại tổng của LineTotal trực tiếp từ bộ sưu tập?

Tôi muốn thêm tổng số đơn đặt hàng làm thuộc tính của lớp Đơn hàng của tôi. Tôi tưởng tượng tôi có thể lặp qua bộ sưu tập và tính toán số tiền với một cho mỗi Order.OrderDetail, nhưng tôi đoán có một cách tốt hơn.

Trả lời

151

Bạn có thể làm LINQ to Objects và việc sử dụng LINQ để tính toán tổng số:

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

Bạn cũng có thể sử dụng lambda-biểu thức để làm điều này, đó là một chút "bụi".

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

Sau đó bạn có thể treo này lên đến trật tự lớp học của bạn như thế này nếu bạn muốn:

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