Quel est le moyen le plus rapide / le plus efficace d'obtenir tous les éléments distincts d'une liste ?
J'ai une List
qui contient peut-être plusieurs éléments répétés et je veux seulement les valeurs uniques dans la liste.
Quel est le moyen le plus rapide / le plus efficace d'obtenir tous les éléments distincts d'une liste ?
J'ai une List
qui contient peut-être plusieurs éléments répétés et je veux seulement les valeurs uniques dans la liste.
Utilisez un HashSet
. Par exemple :
var items = "A B A D A C".Split(' ');
var unique_items = new HashSet(items);
foreach (string s in unique_items)
Console.WriteLine(s);
imprime
A
B
D
C
Vous pouvez utiliser la méthode Distinct
pour renvoyer un IEnumerable
d'éléments distincts:
var uniqueItems = yourList.Distinct();
Et si vous avez besoin que la séquence d'éléments uniques soit renvoyée sous forme de List
, vous pouvez ajouter un appel à ToList
:
var uniqueItemsList = yourList.Distinct().ToList();
Vous pouvez utiliser la méthode d'extension Distinct de LINQ
En dehors de la méthode d'extension Distinct
de LINQ, vous pourriez utiliser un objet HashSet
que vous initialisez avec votre collection. C'est très probablement plus efficace que la méthode LINQ, car elle utilise des codes de hachage (GetHashCode
) plutôt qu'un IEqualityComparer
).
En fait, si c'est approprié pour votre situation, je recommande simplement d'utiliser un HashSet
pour stocker les éléments en premier lieu.
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.