Saltar al contenido

Selección de LINQ en el diccionario de C#

Luego de investigar con especialistas en esta materia, programadores de varias áreas y maestros dimos con la respuesta al problema y la compartimos en esta publicación.

Solución:

Si está buscando por el fieldname1 valor, prueba esto:

var r = exitDictionary
   .Select(i => i.Value).Cast>()
   .Where(d => d.ContainsKey("fieldname1"))
   .Select(d => d["fieldname1"]).Cast>>()
   .SelectMany(d1 => 
       d1
        .Where(d => d.ContainsKey("valueTitle"))
        .Select(d => d["valueTitle"])
        .Where(v => v != null)).ToList();

Si está buscando por el tipo de valor en el subDictionary (Dictionary explícitamente), puede hacer esto:

var r = exitDictionary
   .Select(i => i.Value).Cast>()
   .SelectMany(d=>d.Values)
   .OfType>>()
   .SelectMany(d1 => 
       d1
        .Where(d => d.ContainsKey("valueTitle"))
        .Select(d => d["valueTitle"])
        .Where(v => v != null)).ToList();

Ambas alternativas devolverán:

title1
title2
title3
title1
title2
title3

Una forma sería primero aplanar la lista con un SelectMany:

subList.SelectMany(m => m).Where(k => k.Key.Equals("valueTitle"));

Esto devolverá todos los valores que coincidan con su key valueTitle

subList.SelectMany(m => m).Where(kvp => kvp.Key == "valueTitle").Select(k => k.Value).ToList();

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *