151 votes

C#/Linq : Appliquer une fonction de mapping à chaque élément d'un IEnumerable ?

J'ai cherché un moyen de transformer chaque élément d'un fichier IEnumerable en quelque chose d'autre à l'aide d'une fonction de correspondance (d'une manière compatible avec Linq), mais je n'ai rien trouvé.

Pour un exemple (très simple), il devrait pouvoir faire quelque chose comme

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());

Mais je n'ai rien trouvé. Je veux dire qu'il est assez simple d'écrire une méthode d'extension qui accomplit cela (en gros, tout ce qu'il faut, c'est envelopper la source Enumerator dans une nouvelle classe et d'écrire un peu de code pour déléguer les appels à cette classe), mais je me serais attendu à ce que ce soit une opération assez élémentaire, et l'écrire moi-même me donne l'impression de réinventer la roue - je n'arrive pas à me débarrasser du sentiment qu'il existe peut-être une méthode intégrée que je devrais utiliser, et que j'ai juste été trop aveugle pour la voir.

Y a-t-il quelque chose dans Linq qui me permette de faire ce que je viens de décrire ?

248voto

George Duckett Points 17305

Vous pouvez simplement utiliser la fonction Select() méthode d'extension :

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Select(i => i.ToString());

Ou dans la syntaxe LINQ :

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };

var strings = from i in integers
              select i.ToString();

36voto

Tim Lloyd Points 23571

Vous recherchez Select qui peut être utilisé pour transformer \project la séquence d'entrée :

IEnumerable<string> strings = integers.Select(i => i.ToString());

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