web-dev-qa-db-fra.com

Comment utiliser Linq pour obtenir une liste unique de propriétés à partir d'une liste d'objets?

J'essaie d'utiliser Linq pour renvoyer une liste d'identifiants à partir d'une liste d'objets dont l'identifiant est une propriété. J'aimerais pouvoir le faire sans avoir à parcourir en boucle chaque objet et à extraire les identifiants uniques que je trouve.

J'ai une liste d'objets de type MyClass et l'une des propriétés de cette classe est un identifiant.

public class MyClass
{
  public int ID { get; set; }
}

Ce que je veux faire, c'est écrire une requête Linq pour me retourner une liste de ces identifiants.

Comment puis-je faire cela étant donné un IList<MyClass> tel qu'il retourne un IEnumerable<int> des identifiants?

Je suis sûr qu'il doit être possible de le faire sur une ou deux lignes à l'aide de Linq plutôt que de parcourir en boucle chaque élément de la liste MyClass et d'ajouter les valeurs uniques à une liste.

Toute aide à la création d’une solution élégante serait très appréciée!

163
mezoid
IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();
303
Marc Gravell

Utilisez le opérateur distinct :

var idList = yourList.Select(x=> x.ID).Distinct();
29
CMS

Utilisation de straight Linq, avec l'extension Distinct():

var idList = (from x in yourList select x.ID).Distinct();
13
Dana
        int[] numbers = {1,2,3,4,5,3,6,4,7,8,9,1,0 };
        var nonRepeats = (from n in numbers select n).Distinct();


        foreach (var d in nonRepeats)
        {

            Response.Write(d);
        }

SORTIE

1234567890

3
Black Eagle