Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ - Get all items in a List within a List?

Tags:

I'm currently working my way through the learning curve that is LINQ and I could really use some assistance. I don't know if what I want is possible, but if I had to wager, I bet it is.

I currently have a list of objects called _tables and each of these objects has within it another list of objects exposed through the property, "Indexes". Essentially, I'd like to end up with one List that contains all the Indexes from all of the _tables.

Here's what I have so far:

var indexes = from TableInfo tab               in _tables               where tab.Indexes.Count > 0               select tab.Indexes; 

Unfortunately, this seems to be giving me another List of Lists, but only where the Indexes List contains more than one value... Is there some way to get all of these lists together without loops?

like image 864
Sonny Boy Avatar asked Jul 16 '10 16:07

Sonny Boy


2 Answers

You want to use the SelectMany extension method.

_tables.SelectMany(t => t.Indexes) 
like image 170
tbischel Avatar answered Sep 20 '22 13:09

tbischel


In addition to tbischel's answer, the query expression version of what you're going for is below.

var indexes = from TableInfo tab in _tables                from index in tab.Indexes               select index; 
like image 41
Anthony Pegram Avatar answered Sep 17 '22 13:09

Anthony Pegram