165 votes

Distinct en Linq sur la base d'un seul champ de la table

J'essaie d'utiliser .distinct dans Linq pour obtenir un résultat basé sur un champ de la table (afin de ne pas avoir besoin de tous les enregistrements dupliqués de la table).

Je sais écrire une requête de base en utilisant distinct comme suit :

var query = (from r in table1
orderby r.Text
select r).distinct();

mais j'ai besoin de résultats où r.text n'est pas dupliqué.

3voto

Josh Parks Points 39

D'après ce que j'ai trouvé, votre demande est en grande partie correcte. Il suffit de remplacer "select r" par "select r.Text" et cela devrait résoudre le problème. C'est ainsi que MSDN a documenté comment cela devrait fonctionner.

Ex :

    var query = (from r in table1 orderby r.Text select r.Text).distinct();

1voto

shweta Points 23
data.Select(x=>x.Name).Distinct().Select(x => new SelectListItem { Text = x });

-1voto

sami ullah Points 446

Distinct vous renvoie la colonne SINGLE, si c'est votre cas alors ! !!

CountryData.Select(x=>x.COUNTRY_NAME).Distinct()

Sinon, si vous avez besoin de plusieurs colonnes distinctes par une colonne, vous devez groupe par puis sélectionnez le premier élément du groupe. (dans ce cas, les autres éléments du groupe ayant des valeurs différentes ne seront pas renvoyés).

CountryData.GroupBy(a=>a.COUNTRY_NAME).Select(a=>a.First());

-2voto

HamidReza Points 691

Essayez ce code :

table1.GroupBy(x => x.Text).Select(x => x.FirstOrDefault());

-6voto

LucaGuerra Points 84

Vous pouvez essayer ceci : table1.GroupBy(t => t.Text).Select(shape => shape.r)).Distinct();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X