Ho una raccolta di oggetti di un tipo che mi piacerebbe convertire in un tipo diverso. Questo può essere fatto facilmente con foreach, ma mi piacerebbe capire come usare la funzione di aggregazione di Linq per farlo.Come aggiungere a un elenco utilizzando la funzione di aggregazione di Linq C#
Il problema è che tutti gli esempi di Aggregate utilizzano tipi di stringa di riga o int, che supportano l'operatore '+'. Mi piacerebbe che il tipo di accumulatore fosse una lista, che non supporta la semantica '+'.
Ecco un rapido esempio:
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)));
Il problema è che Lista <> .Add restituisce void. Il tipo di ritorno del secondo parametro in Aggregato deve essere un elenco.
Se avessi un tipo di lista che ha sostenuto '+' di tipo semantica ho potuto solo fare il secondo parametro
list + item
Tuttavia non posso trovare qualsiasi tipo di raccolta che supporta questo genere di cose.
Sembra che questo dovrebbe essere facilmente possibile in Linq. C'è un modo? Inoltre, se mi manca un modo completamente più semplice, mi piacerebbe conoscere anche questo. Grazie!
Grazie per tutte le grandi risposte! Le risposte di Sam & Talljoe hanno ottenuto questo semplicemente usando Linq. Di nuovo! – Slaggg