2009-07-23 26 views
7

Tôi muốn nhận được tổng số mục trong List s trong Dictionary sau:Làm cách nào để nhận tổng số Danh sách lồng nhau trong Từ điển mà không cần sử dụng foreach?

Dictionary<int, List<string>> dd = new Dictionary<int, List<string>>() { 
    {1, new List<string> {"cem"}}, 
    {2, new List<string> {"cem", "canan"}}, 
    {3, new List<string> {"canan", "cenk", "cem"}} 
}; 

// This only returns an enumerated array. 
var i = (from c in dd 
     select c.Value.Count).Select(p=>p); 
+0

Bạn muốn có tổng số? Trong trường hợp của ví dụ 6? –

+0

có. Tôi muốn đếm số lượng của tất cả các mục trong danh sách các mục từ điển. – uzay95

Trả lời

18

Tôi tin rằng điều này sẽ giúp bạn có được số lượng bạn muốn một cách hiệu quả và rõ ràng . Dưới mui xe nó phải lặp qua danh sách, nhưng để có được tổng số, không có cách nào để tránh điều này.

var i = dd.Values.Sum(x => x.Count); 
0

Làm thế nào về điều này?

var l = dd.Select(i => new {i, i.Value.Count}); 
+0

ohhh didnt thấy rằng nhận xét cuối cùng ... oh cũng – BigBlondeViking

+0

điều này là tốt nhưng không đáp ứng yêu cầu của tôi. – uzay95

1
var i = dd.Values.SelectMany(v => v).Count(); 
0

Tổng số đếm của tất cả các mục danh sách:

dd.SelectMany(i => i.Value).Count(); 

List chứa đếm danh sách cá nhân:

dd.Select(i => i.Value.Count).ToList() 
+0

Câu trả lời hay sử dụng với SelectMany. – uzay95

0

var total = dictionary.Sum (x => x.Value.Count());

Các vấn đề liên quan