Chúng tôi có một cấu trúc đơn giản mà chỉ là một danh sách liệt kê, như vậy ...Có thể sử dụng LINQ để nhận tổng số mục trong danh sách các danh sách không?
var fooInfo = new List<List<Foo>>();
Tôi tự hỏi nếu có một cách đơn giản chúng ta có thể sử dụng LINQ để trả lại tổng cộng tất cả các mục từ bên trong danh sách. Ví dụ: nếu chúng tôi có điều này ...
fooInfo.add(new List<Foo>()); // First list within the outer list
fooInfo.add(new List<Foo>()); // Second list within the outer list
fooInfo.add(new List<Foo>()); // Third list within the outer list
// Add two items to the first inner list
fooInfo[0].add(new Foo());
fooInfo[0].add(new Foo());
// Add one item to the second inner list
fooInfo[1].add(new Foo());
// Add four items to the third inner list
fooInfo[2].add(new Foo());
fooInfo[2].add(new Foo());
fooInfo[2].add(new Foo());
fooInfo[2].add(new Foo());
... chúng tôi sẽ có ba danh sách với hai, một và bốn mục tương ứng, có nghĩa là tổng số đối tượng 'Foo' là bảy. Đó là con số tôi hy vọng sẽ lấy qua linq thay vì phải viết mã vòng lặp của chúng ta và kiểm tra chúng theo cách thủ công.
ví dụ:
var totalFoos = fooInfo.LINQToGetTotalFoos();
hơn ....
int totalFoos = 0;
foreach(var childList in fooInfo)
totalFoos += childList.Count();
@NikhilAgrawal 'Có thể đếm được .Count()' kiểm tra nếu đích thực hiện 'ICollection ' (và do đó có thuộc tính 'Đếm') và sử dụng nó nếu có. –
MarcinJuraszek
Có. Điểm hợp lệ. Mối quan tâm của tôi là sử dụng 'List.Count' thay vì' IEnumerable.Count'. Điều đó sẽ làm cho truy vấn của bạn nhẹ hơn. –
Đọc http://stackoverflow.com/questions/981254/is-the-linq-count-faster-or-slower-than-list-count-or-array-length này –