Tengo una colección de objetos de un tipo que me gustaría convertir a un tipo diferente. Esto se puede hacer fácilmente con foreach, pero me gustaría descubrir cómo usar la función agregada de Linq para hacerlo.Cómo agregar a una lista usando la función agregada de Linq C#
El problema es que todos los ejemplos de agregado utilizan tipos de línea de línea o int, que admiten el operador '+'. Me gustaría que el tipo de acumulador sea una lista, que no admite la semántica '+'.
Aquí está un ejemplo rápido:
public class DestinationType
{
public DestinationType(int A, int B, int C) { ... }
}
var set = from item in context.Items
select new { item.A, item.B, item.C };
var newSet = set.Aggregate(new List<DestinationType>(),
(list, item) => list.Add(new DestinationType(item.A, item.B, item.C)));
El problema es que la lista <> .Add regresa vacía. El tipo de devolución del segundo parámetro para agregar debe ser una lista.
Si tuviera un tipo de lista que apoyó '+' semántica de tipo tan sólo pudiera hacer que el segundo parámetro
list + item
Sin embargo no puedo encontrar ningún tipo de colección que apoya este tipo de cosas.
Parece que esto debería ser posible en Linq. ¿Hay alguna manera? Además, si me estoy perdiendo una manera completamente más fácil, me encantaría aprender sobre eso también. ¡Gracias!
Gracias por todas las grandes respuestas! Las respuestas de Sam y Talljoe lograron esto de la manera más simple usando Linq. ¡Thx otra vez! – Slaggg