2009-07-23 4 views
7

ich die Gesamtzahl der Elemente in den List s in der folgenden Dictionary erhalten möchten:Wie bekomme ich die Summe der Zählungen von verschachtelten Listen in einem Wörterbuch ohne 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

Sie möchten eine Gesamtzahl? Im Fall des Beispiels 6? –

+0

ja. Ich möchte die Zählung aller Items von Dictionarys zählen. – uzay95

Antwort

18

Ich glaube, das Sie die Zählung Sie effizient wollen bekommen und deutlich . Unter der Haube muss es durch die Listen iterieren, aber um eine Gesamtanzahl zu erhalten, gibt es keine Möglichkeit, dies zu vermeiden.

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

Wie wäre das?

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

ohhh habe diesen letzten Kommentar nicht gesehen ... oh well – BigBlondeViking

+0

das ist gut, aber reagiert nicht auf meine Anfrage. – uzay95

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

Gesamtanzahl aller Listenelemente:

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

List enthält individuelle Liste zählt:

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

Gute Antwort mit SelectMany. – uzay95

0

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

Verwandte Themen