How to make LEFT JOIN in Lambda LINQ expressions

c# entity-framework linq

Question

How to make this expression as LEFT JOIN

var query = order.Items.Join(productNonCriticalityList,
    i => i.ProductID,
    p => p.ProductID,
    (i, p) => i);
1
6
2/3/2014 8:50:15 PM

Accepted Answer

And this is the more complicated way using lambda expressions to write it:

order.Items
   .GroupJoin (
      productNonCriticalityList, 
      i => i.ProductID, 
      p => p.ProductID, 
      (i, g) => 
         new  
         {
            i = i, 
            g = g
         }
   )
   .SelectMany (
      temp => temp.g.DefaultIfEmpty(), 
      (temp, p) => 
         new  
         {
            i = temp.i, 
            p = p
         }
   )
22
2/3/2014 9:12:36 PM

Popular Answer

I would recommend switching to from syntax and you can use the into keyword.

It does the same thing as the method syntax and is far more readable (IMO).

(from l1 in myFirstDataSet
join l2 in mySecondDataSet on l1.<join_val> equals l2.<join_val> into leftJ
from lj in leftJ.DefaultIfEmpty()
where <your_where_clause>
select <something>).ToList();


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow