Is it possible to use Linq to get a total count of items in a list of lists?
aggregate, c#, linq
Solution
A simple Enumerable.Sum would suffice.
var totalFoos = fooInfo.Sum(childList => childList.Count);
It computes the sum of the sequence of Int32 values that are obtained by invoking a transform function on each element of the input sequence.
You can use `SelectMany` but performance of this would be better.
Problem
We have a simple structure which is just a list of lists, like so... ``` var fooInfo = new List<List<Foo>>(); ``` I'm wondering if there's a simple way we can use linq to return the total of all items from the inner lists. For example, if we had this... ``` 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()); ``` ...we would have three lists with two, one and four items respectively, meaning the total 'Foo' objects are seven. That's the number I'm hoping to retrieve via linq rather than having to write our own looping code and manually tally them up. e.g. ``` var totalFoos = fooInfo.LINQToGetTotalFoos(); ``` rather than.... ``` int totalFoos = 0; foreach(var childList in fooInfo) totalFoos += childList.Count(); ```