When writing LINQ queries in C#, I know I can perform a join using the join
keyword. But what does the following do?
from c in Companies from e in c.Employees select e;
A LINQ book I have say it's a type of join, but not a proper join (which uses the join
keyword). So exactly what type of join is it then?
Multiple "from" statements are considered compound linq statments. They are like nested foreach statements. The msdn page does list a great example here
var scoreQuery = from student in students from score in student.Scores where score > 90 select new { Last = student.LastName, score };
this statement could be rewritten as:
SomeDupCollection<string, decimal> nameScore = new SomeDupCollection<string, float>(); foreach(Student curStudent in students) { foreach(Score curScore in curStudent.scores) { if (curScore > 90) { nameScore.Add(curStudent.LastName, curScore); } } }
This will get translated into a SelectMany()
call. It is essentially a cross-join.
Jon Skeet talks about it on his blog, as part of the Edulinq series. (Scroll down to Secondary "from" clauses.)
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