Với các đối tượng sau đây:LINQ: Làm thế nào để truy vấn các mục từ một bộ sưu tập cho đến khi số tiền đạt đến một giá trị nhất định
public class Product {
string Name {get;}
int Quantity {get;}
}
sử dụng LINQ, làm thế nào tôi sẽ truy vấn một List<Product>
cho đến khi tôi nhận được một khoản tiền >=
một số lượng nhất định? Nói cách khác, nếu danh sách của tôi trông giống như
Name Quantity
-----------------
prod1 5
prod2 6
prod7 7
Tôi muốn truy vấn Danh sách và kéo các trường hợp cho đến khi tôi nhận được tổng số >=8
. Trong trường hợp này, tôi sẽ nhận được hai mục đầu tiên trong Danh sách. Nếu tôi muốn tổng số >= 12
, tôi sẽ nhận được cả ba.
Tôi biết tôi có thể viết một vòng lặp để làm điều này cho tôi, nhưng tôi đã tưởng tượng rằng có một số lớp lót trơn bằng cách sử dụng LINQ để đạt được điều tương tự.
Cảm ơn
Thật ngọt ngào .. – jlembke
Sẽ hiệu quả hơn nếu bạn làm điều tương tự ngoại trừ thay vì. Trong đó(), để sử dụng .TakeWhile(), và kiểm tra xem tổng số lúc bắt đầu lớn hơn 500, không phải ở cuối (nếu không bạn sẽ lấy một phần tử quá ít.) Sau đó, việc lặp lại sẽ chấm dứt khi hàng rào 500 là bị hỏng. – mquander
@mquander, cả hai điểm tốt, cập nhật câu trả lời – JaredPar