2010-03-15 2 views
0

Это нормально, он производит левый присоединитьсяLinq оставил присоединение с нетривиальным условием

var q = 
    from c in categories 
    join p in products 
    on c equals p.Category into ps 
    from p in ps.DefaultIfEmpty() 
    select new { Category = c, ProductName = p == null ? "(No products)" : p.ProductName }; 

Но что, если я хотел сделать что-то вроде этого:

... 
on p.date between c.startdate and c.enddate 
... 

ответ

1
var q = 
    from c in categories 
    join p in products 
    on c equals p.Category into ps 
    from p in ps.DefaultIfEmpty() 
    where p.date >= c.startdate && p.date <= c.enddate 
    select new { Category = c, ProductName = p == null ? "(No products)" : p.ProductName }; 
+0

За исключением I» m не заинтересованы в оригинале по статье. Я заменил его на 1 равно 1. Не будет ли это ужасно обременительным? – Martin

Смежные вопросы