none
Consulta donde el Where esté basado en una lista. RRS feed

  • Pregunta

  • Hola:

    Te la siguiente consulta, la cual me devuelve todas las cuentas que empiezan por el contenido de la variable grupo:

    return db.PGCEmpresa.Where(p=> p.Cuenta.StartsWith(Grupo)).ToList();

    El filtrado que hace actualmente es solamente con un grupo, pero lo que pretendo grupo sea una lista y que filtre por cada el elemnto de la lista.

    grupo = {4,5,6,7}

    Como habría que hacer para que me filtre todas las cuentas que empiecen por 4, 5, 6 y 7 que se lo paso mediante una lista.

    Un Saludo.

    jueves, 4 de diciembre de 2014 13:39

Todas las respuestas

  • Podrías iterar sobre la lista acumulando resultados, más o menos así:

    List<string> laLista = new List<string>() {"4", "5", "6", "7"};
    List<PGCEmpresa> resultados = new List<PGCEmpresa>();
    foreach (string prefijo in laLista)
    {
        resultados.AddRange(db.PGCEmpresa.Where(p => p.Cuenta.StartsWith(prefijo)));
    } 
    return resultados;
    Evidentemente, esto genera una consulta al servidor por cada item de la lista. Si necesitas aumentar el rendimiento, probablemente sería preferible agregar dinámicamnte un "or" por cada elemento de la lista, pero eso será significativamente más complejo.

    jueves, 4 de diciembre de 2014 14:13