Linq Distinct() par nom pour remplir une liste déroulante avec le nom et la valeur
Je suis en train de remplir une liste déroulante avec des sociétés pharmaceutiques, comme Bayer, Medley etc. Et, je suis de ces noms de DB et ces noms sont répétés dans la DB, mais avec les différents id.
Je suis en train d'utiliser Linq Distinct(), mais je ne veux pas utiliser le comparateur d'égalité. Est-il une autre voie?
Ma liste déroulante doit être rempli avec l'id et le nom de la société.
Je suis en train d'essayer quelque chose comme:
var x = _partnerService
.SelectPartners()
.Select(c => new {codPartner = c.codPartner, name = c.name})
.Distinct();
Cette montre répété entreprises en ddl.
merci!
- Si une entreprise apparaît plusieurs fois avec différents identifiants et vous souhaitez qu'elles apparaissent qu'une seule fois, ce code doit être indiqué? Le premier? N'a pas d'importance?
- L'id est de l'identité
Vous devez vous connecter pour publier un commentaire.
L'expression suivante permettra de sélectionner uniquement des sociétés distinctes et de retour de la première occurence avec son id.
groupby
etselect
à la fin de votre principal select de linq, c'est très utile @Daniel Brückner, TNXŒuvres distinctes, sur l'ensemble de la sélectionner. Si vous incluez c.codPartner dans le sélectionner, et il y a deux différentes valeurs de c.codPartner pour les mêmes c.nom, alors vous allez voir deux lignes avec le même c.nom.
Je ne pense pas que vous pouvez le faire avec une classe anonyme, mais si vous avez créé un objet de données comme
vous pouvez créer un comparateur objet comme
Si vous ne spécifiez pas un paramètre IEqualityComparer, alors il suffit d'utiliser l'Objet.ReferenceEquals, qui regarde les objets GetHashKey valeur. Pour les types anonymes, elles sont uniques.
Maintenant résoudre c'est un peu délicat, car vous ne pouvez pas écrire un IEqualityComparer pour un type anonyme. Si vous bardenpho modifié créer un vrai type du problème:
Distinctes utilisera GetHashCode si vous n'avez pas le dire (par le biais d'un IEqualityComparer) à utiliser une autre méthode.
Vous pouvez utiliser un générique equalitycomparer, comme ceci:
et ensuite utiliser comme ceci (kindof)
passez simplement votre propre comparaison de l'Distinctes méthode à l'aide de l'un des autres surcharges.