I've got an object of type A which consists of a list of objects of type B:
class A { list<B> Alist;} class B { string C; string D;} In my program I have a list of A objects:
list<A> listOfA = computeAList(); and I would like to select all the C strings in that list. The following statement I hoped would give me the result I wanted; it returns a list of lists containing the C's:
var query = from objectA in listOfA select objectA.Alist.FindAll(x => x.C.Length > 0).C; Is there a way to get a single list of all the C's instead?
ybo's answer would have been my first response too. The query expression equivalent of this is:
var query = from a in computeAList() from b in a.Alist select b.C; For the sake of completeness, the other answers in this thread are variations on the same theme.
From ybo (the exact same query, expressed as dot notation):
var query = listOfA.SelectMany(a => a.Alist, (a, b) => b.C); From Ray Hayes (including the Where clause; I've reformatted slightly):
var query = listOfA.SelectMany(a => a.AList, (a, b) => b.C) .Where(c => c.Length > 0);
I too would have had a similar answer, my only modification was to add the where clause to avoid having empty strings (where C is empty):
listOfA.SelectMany( a => a.AList, (a, b) => b.C ).Where( c => c.Length > 0 );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With