C# lambda obtenir la liste distincte de valeur conditionnelle
J'ai une liste d'utilisateurs comme indiqué ci-dessous:
List<User> users = new List<User>();
users.Add(new User(){ UserId = "11", City = "London" });
users.Add(new User(){ UserId = "12", City = "London" });
users.Add(new User(){ UserId = "12", City = "London" });
users.Add(new User(){ UserId = "11", City = "Newyork" });
users.Add(new User(){ UserId = "14", City = "Virginia" });
Ici, je veux obtenir distinctes Identifiants ceux qui ont autre Ville par C# lambda expression
Donc, dans le cas ci-dessus, je devrais obtenir une List<string>
qui ne contient UserId = 11 éléments, car le nom d'utilisateur est le même, mais la ville est différentes pour à la fois l'élément.
Pourriez-vous s'il vous plaît laissez-moi savoir comment je le fais en C# lambda code.
Merci d'avance.
Qu'avez-vous essayé?
J'ai essayé par le Groupe lambda de la clause, mais de ne pas réussir.
S'il vous plaît montrer votre code.
Ici est la même question: stackoverflow.com/questions/1183403/...
J'ai essayé par le Groupe lambda de la clause, mais de ne pas réussir.
S'il vous plaît montrer votre code.
Ici est la même question: stackoverflow.com/questions/1183403/...
OriginalL'auteur nunu | 2012-08-29
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme:
devrait le faire.
Il prend le {UserId,Ville} paires et les convertit en groupes de ces paires indexé par le nom d'utilisateur; et puis regarde pour les cas où il n'y a plus d'une ville dans le groupe. Enfin de prendre la clé des groupes pour le résultat.
Salut Richard... Maintenant, je veux obtenir l'inverse des scénarios... je veux sélectionner seulement ceux dont les Identifiants ont un seul ou plusieurs des villes SIMILAIRES... Pourriez-vous s'il vous plaît dites-moi comment aurais-je le faire?? Merci à l'avance!
Pour la seule ville changer la
> 1
condition de== 1
. Pour similaire vous aurez besoin de remplacer laDistinct
avec quelque chose qui fonctionne avec ce que vous entendez par similaire (ce qui pourrait être un customIEqualityComparer<T>
passé àEnumerable.Distinct
's de surcharge). Sans une définition spécifique de l'similaires, il est trop ambiguë pour être plus précis.Richard vous avez un exemple de comment passer un lambda/fonction anonyme pour Énumérable.Distinctes? I. e. comme ceci mais sans la séparer de la méthode.
Malheureusement vous ne pouvez pas.
Enumerable.Distinct
est uneIEqualityComparer<T>
plutôt que d'un délégué. Et il n'y a aucun moyen de créer une mise en œuvre d'une interface avec un délégué (si une autre fonction ou lambda): vous devez avoir un type. Il devrait être possible de créer un helper de type qui implémenteIEqualityComparer<T>
basée sur une extraction de clé délégué sans trop de difficulté (mais trop long à écrire ici, avec le peu de possibilités de mise en forme).OriginalL'auteur Richard
OriginalL'auteur Jon Hanna
OriginalL'auteur Sanjay Gupta