it-swarm-vi.tech

Tổng hợp các mặt hàng trong một bộ sưu tập

Sử dụng LINQ to SQL, tôi có một lớp Order với một tập hợp OrderDetails. Chi tiết đơn hàng có một thuộc tính được gọi là LineTotal, được Qnty x Itemprice.

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

Tôi muốn thêm tổng số đơn đặt hàng làm tài sản của lớp Đơn hàng của mình. Tôi tưởng tượng rằng tôi có thể lặp qua bộ sưu tập và tính tổng với một thứ tự cho mỗi Đơn hàng. Đặt hàng, nhưng tôi đoán có một cách tốt hơn.

70
Adrian

Bạn có thể thực hiện LINQ to Object và sử dụng LINQ để tính tổng:

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

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

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

Sau đó, bạn có thể nối cái này với lớp Order 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);
    }
  }
}
157
Espo