abbiamo una struttura semplice, che è solo una lista di liste, in questo modo ...È possibile utilizzare Linq per ottenere un conteggio totale di elementi in un elenco di elenchi?
var fooInfo = new List<List<Foo>>();
mi chiedo se c'è un modo semplice possiamo usare LINQ to restituire il totale di tutti gli elementi dall'interno elenchi. Per esempio, se abbiamo avuto questa ...
fooInfo.add(new List<Foo>()); // First list within the outer list
fooInfo.add(new List<Foo>()); // Second list within the outer list
fooInfo.add(new List<Foo>()); // Third list within the outer list
// Add two items to the first inner list
fooInfo[0].add(new Foo());
fooInfo[0].add(new Foo());
// Add one item to the second inner list
fooInfo[1].add(new Foo());
// Add four items to the third inner list
fooInfo[2].add(new Foo());
fooInfo[2].add(new Foo());
fooInfo[2].add(new Foo());
fooInfo[2].add(new Foo());
... avremmo tre liste con due, uno e quattro voci, rispettivamente, il che significa il totale degli oggetti 'Foo' sono sette. Questo è il numero che spero di recuperare tramite linq piuttosto che dover scrivere il nostro codice di looping e verificarlo manualmente.
ad es.
var totalFoos = fooInfo.LINQToGetTotalFoos();
piuttosto che ....
int totalFoos = 0;
foreach(var childList in fooInfo)
totalFoos += childList.Count();
@NikhilAgrawal 'Enumerable .Count()' verifica se il target implementa 'ICollection ' (e per questo ha la proprietà 'Count') e lo usa se lo fa. –
MarcinJuraszek
Sì. Punto valido La mia preoccupazione era di usare 'List.Count' invece di' IEnumerable.Count'. Ciò renderebbe le tue domande più leggere. –
Leggi questo http://stackoverflow.com/questions/981254/is-the-linq-count-faster-or-slower-than-list-count-or-array-length –