Sélectionner tout dans la collection où ID dans la liste

c# dapper list select

Question

J'apprends juste à utiliser les expressions lambda et a été activé sur Dapper il y a quelques jours. Je travaille sur une application qui remplit un listView avec les noms d'utilisateur à sélectionner pour la maintenance de certains comptes. J'ai un problème avec une partie du tri:

  • J'obtiens une collection d'objets en utilisant une requête Dapper et en l'affectant à la variable Global.allUsers .
  • J'ai une liste d'identifiants ( List<int> migrated ) qui ont déjà été utilisés et je n'ai donc pas besoin d'apparaître dans la listView
  • Je reçois une liste de tous mes utilisateurs en utilisant ce qui suit:

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

Pour renseigner listView uniquement avec les utilisateurs qui n'ont pas été migrés, je dois sélectionner uniquement les utilisateurs sans q.salesIDs dans la migrated . Je ne peux pas vraiment savoir si / comment je peux le faire sans utiliser une sorte de foreach . On dirait qu'il devrait y avoir un moyen de le sélectionner.

Certes, je suis en uniqUsers parcourir uniqUsers quand même et de listView le listView avec des valeurs en dehors des propriétés de chaque objet. Je peux ajouter une déclaration pour vérifier si l'ID actuel est en cours de migrated , mais mon instinct me dit simplement que je peux le faire avec l'instruction select et me sauver une étape.

Je pense à quelque chose comme ça:

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

mais i => i.salesIDs not in migrated n'est pas le couper.

Réponse acceptée

Cela fait ce dont vous avez besoin:

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

Obtient tous les utilisateurs dans lesquels salesID est migrated , puis les commandes par lastNames , puis les groupes par salesID . SelectMany() projette les éléments dans une séquence, la liste de ToList() énumère les résultats.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi