2009-07-23 8 views
7

Chcę uzyskać całkowitą liczbę pozycji w List s w następujący Dictionary:Jak uzyskać sumę liczby zagnieżdżonych list w słowniku bez korzystania z 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

Potrzebujesz całkowitej liczby? W przypadku przykładu 6? –

+0

tak. Chcę policzyć liczbę przedmiotów z listy przedmiotów w słowniku. – uzay95

Odpowiedz

18

Wierzę, że to będzie Ci hrabia chcesz skutecznie i wyraźnie . Pod maską musi on przechodzić przez listy, ale aby uzyskać całkowitą liczbę, nie można tego uniknąć.

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

Jak na ten temat?

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

ohhh nie widziałem tego ostatniego komentarza ... no cóż, – BigBlondeViking

+0

to jest dobre, ale nie odpowiada na moją prośbę. – uzay95

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

Łączna liczba wszystkich elementów listy:

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

List zawierające poszczególne liczy lista:

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

Dobra odpowiedź przy użyciu SelectMany. – uzay95

0

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

Powiązane problemy