2009-07-23 10 views
7
aşağıdaki Dictionary yılında List s öğelerin toplam sayısını almak istiyorum

:Bir sözlükte iç içe geçmiş Listelerin Sayımlarının toplamını foreach kullanmadan nasıl alabilirim?

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

Toplam bir sayı mı istiyorsunuz? Örnek 6 durumunda? –

+0

evet. Dictionarys liste öğesi sayımındaki her öğenin toplam sayısını saymak istiyorum. – uzay95

cevap

18

Bu size verimli ve net bir şekilde istediğiniz sayısı elde olacağına inanıyoruz . Kaputun altında listelerde yineleme yapmak zorundadır, ancak toplam sayımı elde etmek için bundan kaçınmanın bir yolu yoktur.

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

Bu nasıl? tüm liste öğelerinin

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

ohhh son yorumu görmedim ... oh iyi – BigBlondeViking

+0

bu iyi ama isteğime yanıt vermiyor. – uzay95

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

Toplam sayım:

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

List içeren bireysel liste sayımları:

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

SelectMany ile iyi bir cevap kullanmak. – uzay95

0

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

İlgili konular