2009-07-23 16 views
7

Quiero obtener el número total de elementos en los List s en el siguiente Dictionary:¿Cómo obtengo la suma de los recuentos de listas anidadas en un diccionario sin utilizar 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

¿Quiere un total de cuentas? En el caso del ejemplo 6? –

+0

sí. Quiero totalizar el conteo de cada elemento del recuento de elementos de la lista de dictionarys. – uzay95

Respuesta

18

creo que esto le dará el recuento desea eficiente y claramente . Debajo del capó tiene que recorrer las listas, pero para obtener un recuento total, no hay forma de evitarlo.

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

¿Qué tal esto?

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

ohhh no vi ese último comentario ... oh bien – BigBlondeViking

+0

esto está bien pero no responde a mi pedido. – uzay95

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

recuento total de todos los elementos de la lista:

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

List que contienen la lista de los recuentos individuales:

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

Buena respuesta usando con SelectMany. – uzay95

0

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

Cuestiones relacionadas