Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
How to perform LINQ joins with multiple fields in a single join?
Note: this is an aggregate of the answer provided for this question.
I want to get the LINQ equivalent of the following from SQL:
SELECT ..
FROM entity1 e1
JOIN entity2 e2 ON e1.field1 = e2.field1 AND e1.field2 = e2.field2
What is the best way to write the LINQ query?
1 answer
The quickest way is to make an equal join on two anonymous objects:
var result = from x in entity
join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 }
Another way is combine the styles of writing the LINQ statements for more flexibility:
var result = from x in entity1
from y in entity2
.Where(y => y.field1 == x.field1 && y.field2 == x.field2)
This allows for more complex JOIN operations and can be easily transformed into a LEFT JOIN by simply adding a .DefaultIfEmpty()
at the end.
0 comment threads