una objetos lista clase anonima agregar c# generics lambda

clase - agregar objetos a una lista c#



convertir una lista de objetos de un tipo a otro utilizando lambda expresión (7)

Aquí hay un ejemplo simple ...

List<char> c = new List<char>() { ''A'', ''B'', ''C'' }; List<string> s = c.Select(x => x.ToString()).ToList();

Tengo un ciclo foreach leyendo una lista de objetos de un tipo y produciendo 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, soy nuevo en lambda y linq gracias, s


Creo que algo como esto debería funcionar:

origList.Select(a => new TargetType() { SomeValue = a.SomeValue});


Pruebe lo siguiente

var targetList = origList .Select(x => new TargetType() { SomeValue = x.SomeValue }) .ToList();

Esto está usando una combinación de Lambdas y LINQ para lograr la solución. La función Seleccionar es un método de estilo de proyección que aplicará el delegado pasado (o lambda en este caso) a cada valor en la colección original. El resultado se devolverá en un nuevo IEnumerable<TargetType> . La llamada .ToList es un método de extensión que convertirá este IEnumerable<TargetType> en una List<TargetType> .


Si sabe que desea convertir de List<T1> a List<T2> , List<T>.ConvertAll será ligeramente más eficiente que Select / ToList ya que sabe el tamaño exacto para comenzar:

target = orig.ConvertAll(x => new TargetType { SomeValue = x.SomeValue });

En el caso más general, cuando solo conoce la fuente como IEnumerable<T> , usar Select / ToList es el camino a seguir. También podría argumentar que en un mundo con LINQ, es más idiomático comenzar ... pero vale la pena al menos conocer la opción ConvertAll .


List<target> targetList = new List<target>(originalList.Cast<target>());


var list1 = new List<Type1>(); var list2 = new List<Type2>(); list1.ForEach(item => list2.Add(new Type2() { Prop1 = value1 }));


var target = origList.ConvertAll(x => (TargetType)x);