He estado buscando una forma de transformar cada elemento de un IEnumerable en otra cosa usando una función de mapeo (de una manera compatible con Linq) pero no he encontrado nada.
Para un ejemplo (muy simple), debería poder hacer algo como
IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
Pero no he encontrado nada. Quiero decir, es bastante sencillo escribir un método de extensión que lo haga (básicamente, todo lo que requiere es envolver el enumerador de origen en una nueva clase y luego escribir un poco de código repetitivo para delegar las llamadas), pero habría esperado Esta es una operación bastante elemental, y escribirla yo mismo se siente como reinventar la rueda: no puedo evitar la sensación de que puede haber una forma incorporada que debería usar, y he estado demasiado ciego para ver eso.
Entonces ... ¿hay algo en Linq que me permita hacer lo que describí anteriormente?
Respuestas:
Puedes usar el
Select()
método de extensión:O en sintaxis LINQ:
fuente
Select()
no se ejecutará necesariamente hasta que se enumere. No es que sea una gran idea hacer eso, pero puede haber algunas situaciones en las que deba agregarToList()
para obligarlo a evaluar la lista completa.Está buscando
Select
cuál se puede usar para transformar \ proyectar la secuencia de entrada:fuente