首页 文章

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

提问于
浏览
-1

是否可以将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 回答

  • 1

    LinqPad给出了这样的翻译:

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

相关问题