2016-03-28 104 views
0

我在SQL中有這個查詢,我希望它在LINQ using Entity Framework中實現它,但我怎樣才能應用多個表左外連接?SQL到Linq多個表左外連接

SELECT p.BookMastId as mastId 
FROM BookMast p 
left outer JOIN (SELECT y.BookMastId as Id, t.VrsnMastId as vrsn FROM BookReceiptMast t 
left outer JOIN BookReceiptDtl y 
on t.BookReceiptMastId = y.BookReceiptMastId) s 
on p.BookMastId = s.Id where s.vrsn = 2 
+1

你可以做類似於你的SQL查詢,但它沒有意義,因爲最後一個'WHERE'基本上是把所有'LEFT OUTER'連接都轉換爲'INNER'。 –

+0

請不要只發布SQL並要求轉換。至少顯示一個類模型,以便導航屬性和關聯的多樣性是可見的。此外,展示你自己的第一個努力。他們向我們澄清的比你想象的更多。 –

回答

0

你可以使用from var in collection join in語法,這樣的事情:

using(var cxt = new YourDataBaseContext()){ 
    var firstJoin = from t in cxt.BookReceiptMast 
        join y in cxt.BookReceiptDtl 
         on t.BookReceiptMastId equals y.BookReceiptMastId 
        into yTemp 
        from y in yTemp.DefaultIfEmpty() 
        select new 
        { 
         Id = y != null ? y.BookMastId : 0, 
         vrsn = t.VrsnMastId 
        }; 

    var allTables = from p in cxt.BookMast 
        join s in firstJoin 
         on p.BookMastId equals s.Id 
         into sTemp 
        from s in sTemp 
        where s.vrsn == 2 
        select new 
        { 
         mastId = p.BookMastId 
        }; 
} 

我希望它可以幫助你。