Seleccionar todo de la colección Donde ID en la lista

c# dapper list select

Pregunta

Solo estoy aprendiendo a usar expresiones lambda y estuve conectado a Dapper hace un par de días. Estoy trabajando en una aplicación que rellena una listView con nombres de usuario que se seleccionarán para el mantenimiento de la cuenta. Tengo problemas con una parte de la clasificación:

  • Obtengo una colección de objetos usando una consulta Dapper y la asigno a la variable Global.allUsers .
  • Tengo una lista de ID ( List<int> migrated ) que ya se han utilizado y, por lo tanto, no es necesario que aparezcan en la listView
  • Obtengo una lista de todos mis usuarios usando lo siguiente:

    var  uniqUsers = Global.allUsers.OrderBy(n => n.lastNames).GroupBy(q => q.salesIDs);
    

Para rellenar listView con solo los usuarios que no se han migrado, debo seleccionar solo aquellos usuarios sin q.salesIDs migrated . Simplemente no puedo entender si / cómo puedo hacerlo sin usar algún tipo de foreach . Parece que debería haber una forma de seleccionarlo.

De acuerdo, estoy haciendo un bucle a través de uniqUsers todos modos, y listView el listView con valores de las propiedades de cada objeto. Puedo agregar una declaración para verificar si la identificación actual está en migrated , pero mi instinto me dice que puedo hacerlo con la declaración de selección y ahorrarme un paso.

Estoy pensando algo como esto:

 var  uniqUsers = Global.allUsers.Where(i => i.salesIDs not in migrated).OrderBy(n => n.lastNames).GroupBy(q => q.salesIDs);

pero i => i.salesIDs not in migrated no lo está cortando.

Respuesta aceptada

Esto hace lo que necesitas:

var uniqUsers = allUsers.Where(x => migrated.Contains(x.salesIDs))
                        .OrderBy(y => y.lastNames)
                        .GroupBy(z => z.salesIDs).SelectMany(v => v).ToList();

Obtiene todos los usuarios donde se migrated el salesID , luego pedidos por lastNames y luego grupos por el salesID . El SelectMany() proyectará los elementos en una secuencia, ToList() enumerará los resultados.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow