148 votes

Différence entre Select et ConvertAll en c#

J’ai une liste :

Je veux appliquer une transformation à des éléments de ma liste. Je peux faire cela de deux façons :

Quelle est la différence entre ces deux façons ?

140voto

Oliver Hanappi Points 5141

Select est une méthode d’extension LINQ et fonctionne sur tous les objets de de IEnumerable considérant que ConvertAll est mis en œuvre que par l’énumération . La méthode ConvertAll existe depuis .NET 2.0, considérant que l’introduction de LINQ avec 3.5.

Vous devriez favoriser la sélection sur ConvertAll tel qu’il fonctionne pour tout type de liste, mais ils le font essentiellement le même.

100voto

Guffa Points 308133

ConvertAll n'est pas une extension, c'est une méthode dans la classe de liste. Vous n'avez pas à appeler ToList sur le résultat car c'est déjà une liste:

List<int> list2 = list.ConvertAll(x => 2 * x);

Donc, la différence est que l' ConvertAll méthode ne peut être utilisé que sur une liste et retourne une liste. L' Select méthode peut être utilisée sur n'importe quel ienumerable collection, et il retourne une IEnumerable<T>.

Edit:

Aussi, ils ne le traitement différemment, de sorte qu'ils ont tous leurs forces dans des situations différentes. L' ConvertAll méthode s'exécute par le biais de la liste et crée une nouvelle liste, tandis que l' Select méthode utilise paresseux exécution et traite uniquement les éléments que vous le souhaitez. Si vous n'avez pas besoin de tout l'élément, l' Select méthode est plus efficace. D'autre part, une fois ConvertAll a retourné la liste, vous n'avez pas besoin de garder la liste d'origine.

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