Ho un metodo che contiene N, il numero di oggetti che voglio creare e ho bisogno di restituire un elenco di N oggetti.Creazione di N oggetti e aggiunta a un elenco
Attualmente posso fare questo con un semplice ciclo:
private static IEnumerable<MyObj> Create(int count, string foo)
{
var myList = new List<MyObj>();
for (var i = 0; i < count; i++)
{
myList .Add(new MyObj
{
bar = foo
});
}
return myList;
}
E mi chiedo se c'è un altro modo, magari con LINQ per creare questa lista.
ho provato:
private static IEnumerable<MyObj> CreatePaxPriceTypes(int count, string foo)
{
var myList = new List<MyObj>(count);
return myList.Select(x => x = new MyObj
{
bar = foo
});
}
Ma questo sembra per popolare la mia lista.
Ho provato a cambiare la selezione in un foreach ma è lo stesso affare.
Mi sono reso conto che la lista ha la capacità di conteggio e che LINQ non sta trovando alcun elemento per iterare.
myList.ForEach(x => x = new MyObj
{
bar = foo
});
Esiste un operatore LINQ corretto da utilizzare per farlo funzionare? O dovrei limitarmi al loop?
LINQ è uno strumento di query, non dovrebbe essere usato eccessivamente per la creazione di oggetti – Sayse
Gli operatori di Linq come '.Select()' sono destinati esclusivamente per interrogare insiemi e proiettarli nei moduli richiesti; non sono destinati a fare nulla che altera il set originale. Quello che stai cercando di fare con '.Select()' non è raccomandato, sebbene possa essere fatto funzionare. Mi attaccerei al ciclo. – anaximander
questo potrebbe essere di qualche valore: http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx – Default