Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ to Entity : Multiple join conditions

There are numerous post regarding LINQ and multiple joins. I have however not found any solution to the join I'd like to make.

The SQL equivalent would be something like this:

SELECT * FROM table1 a LEFT JOIN table2 b ON a.col1 = b.key1 AND a.col2 = b.key2 AND b.from_date <= now() AND b.deleted = 0; 

Here's one of the numerous linq queries I've attempted

var query = (from x in context.table1              join y in context.table2 on new {x.col1, x.col2} equals {b.key1, b.key2}               into result              from result...... 

How may I add the additonal conditions of the date and deleted flag? If I use .Where conditions, then this is treated as a inner join, not a left join.

like image 413
Kman Avatar asked Oct 14 '11 08:10

Kman


1 Answers

Another way could be like

var query = (from x in context.table1               join y in context.table2 on               new  {                   Key1 = x.col1,                    Key2 = x.col2,                   Key3 = true,                   Key4 = true                  }              equals              new {                   Key1 = y.key1,                    Key2 =  y.key2,                   Key3 = y.from_date< DateTime.Now,                   Key4 = !y.deleted                  }                into result from r in result.DefaultIfEmpty() select new  {x.Something, r.Something} 
like image 69
Muhammad Adeel Zahid Avatar answered Sep 21 '22 20:09

Muhammad Adeel Zahid