将左连接LINQ查询从Comprehension转换为Lambda语法

时间:2017-05-24 20:16:45

标签: entity-framework linq linq-to-sql

是否可以将LINQ查询从Comprehension转换为“Lambda”语法,即table1.where()。select()。

from t1 in table1
from t2 in table2.Where(t2=>t2.Table1ID == t1.ID).DefaultIfEmpty()
select new {t1.C1, t2.C2}

上面的查询将被转换为SQL中的左连接,而不使用LINQ中的丑陋Join关键字。

1 个答案:

答案 0 :(得分:1)

LinqPad提供了这个翻译:

Table1
   .SelectMany (
      t1 => 
         Table2
            .Where (t2 => (t2.Table1ID) == t1.ID)
            .DefaultIfEmpty (), 
      (t1, t2) => 
         new  
         {
            C1 = t1.C1, 
            C2 = t2.C2
         }
   )