Comment utiliser LINQ pour récupérer des valeurs de propriété distinctes à partir de listes en mémoire

Travailler avec des collections en C# est une tâche courante, surtout lorsqu’il s’agit de gérer différentes propriétés d’objets. Une exigence fréquente consiste à extraire des valeurs uniques d’une liste de manière efficace. Dans cet article, nous allons aborder une question courante rencontrée par de nombreux développeurs : Comment puis-je obtenir un tableau de valeurs de propriété distinctes à partir d’une liste en mémoire en utilisant LINQ ?

Comprendre le Problème

Imaginez que vous ayez une liste d’objets d’une classe appelée Foo. Chaque objet Foo a une propriété de chaîne appelée Bar, et vous souhaitez rassembler toutes les valeurs uniques de Bar de cette liste. Le défi consiste à y parvenir sans une complexité excessive et de manière efficace et maintenable.

Le Scénario

  1. Vous avez une List<Foo>.
  2. Chaque objet Foo a une propriété Bar de type string.
  3. Vous souhaitez obtenir un string[] contenant uniquement les valeurs distinctes des propriétés Bar de tous les instances Foo.

La Solution

Pour extraire efficacement les valeurs distinctes de Bar à partir d’une liste d’objets Foo, vous pouvez utiliser la puissance de LINQ. Voici comment procéder :

Utiliser LINQ pour Extraire des Valeurs Distinctes

Voici un moyen simple et élégant d’atteindre votre objectif en utilisant LINQ :

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

Analyse du Code

  1. Foos.Select(f => f.Bar) : Cette partie du code est une expression lambda qui projette chaque objet Foo dans sa propriété Bar.
  2. .Distinct() : Cet appel de méthode filtre le résultat pour ne retourner que des valeurs uniques, éliminant ainsi efficacement les doublons de la sélection.
  3. .ToArray() : Enfin, ToArray() convertit le résultat IEnumerable<string> en un tableau de chaînes.

Considérations Importantes

  • Exécution Différée : Les requêtes LINQ ne s’exécutent pas tant que vous ne consommez pas explicitement leurs résultats. En utilisant des méthodes comme ToArray() ou Count(), vous déclenchez l’évaluation de la requête.
  • Optimisations : Il est conseillé de construire vos requêtes complètement avant de forcer l’évaluation avec ToArray(), car LINQ peut appliquer des optimisations durant le processus d’exécution.

Conclusion

Utiliser LINQ simplifie non seulement le processus d’extraction de valeurs de propriété distinctes, mais garantit également que votre code est propre et maintenable. En structurants correctement vos requêtes, vous pouvez tirer parti des capacités de LINQ pour optimiser les performances.

Alors, la prochaine fois que vous aurez besoin d’extraire des valeurs distinctes d’une liste en C#, vous pourrez appliquer cette approche simple avec confiance !