Accepted answer

In your second query, result1, there is no subquery, just a query with two from clauses.

Behind the scenes, using two from clauses in this way will be translated into a SelectMany operation:

artists.SelectMany( p1      => p1.albums
                   ,(p1,p2) => new { Artist_id =, Album_id = })


No, at the bottom you're doing an implicit join, not a subquery. A join is where you query both tables at the same time (in the same query).

Related Articles