convertir una lista de objetos de un tipo a otro mediante una expresión lambda
Tengo un bucle foreach que lee una lista de objetos de un tipo y produce una lista de objetos de un tipo diferente. Me dijeron que una expresión lambda puede lograr el mismo resultado.
var origList = List<OrigType>(); // assume populated
var targetList = List<TargetType>();
foreach(OrigType a in origList) {
targetList.Add(new TargetType() {SomeValue = a.SomeValue});
}
Cualquier ayuda sería apreciada- i'm nuevo en lambda y linq Gracias s
200
3
Pruebe lo siguiente
Esta es una combinación de Lambdas y LINQ para lograr la solución. La función Select es un método de tipo proyección que aplicará el delegado pasado (o lambda en este caso) a cada valor de la colección original. El resultado se devolverá en un nuevo
IEnumerable
. La llamada .ToList es un método de extensión que convertirá esteIEnumerable
en unList
.Si sabes que quieres convertir de
List
aList
entoncesList.ConvertAll
será ligeramente más eficiente queSelect
/ToList
porque sabe el tamaño exacto con el que empezar:En el caso más general de que sólo conozcas el origen como un
IEnumerable
, usarSelect
/ToList
es la mejor opción. También se podría argumentar que en un mundo con LINQ, es más idiomático empezar con esto... pero al menos merece la pena conocer la opciónConvertAll
.Creo que algo así debería funcionar: