2012-04-05 82 views
2

我在我的數據庫中有兩個表,看起來就像是:如何在Linq中獲得左外連接?

客戶:

C_ID city 
-------------- 
1  Dhaka 
2  New york 
3  London 

的personal_info:

P_ID C_ID Field  value 
------------------------------- 
1  1  First Name Nasir 
2  1  Last Name Uddin 
3  2  First Name Jon 
4  3  First Name Lee 


我需要一個選擇的結果類似:

C_ID ='1':

C_ID = '2':

C_ID Name (First Name + Last Name) City 
--------------------------------------------- 
2  Jon       New york 

如何將相應的Linq查詢是什麼樣子?

感謝
Nahid

+0

請參見http://stackoverflow.com/questions/1122942/linq-to-sql-left-outer-join-with-multiple-join-conditions的答案 – 2012-04-05 09:27:24

+4

經過將近50個問題你應該開始使用編輯器中的代碼塊按鈕。 – 2012-04-05 09:27:59

回答

3

繼以前的答案,如Linq to Sql: Multiple left outer joins你可以看到結構解決這一比如像:

var result = from customer in customers 
        from personalFirst in personal 
         .Where(pf => pf.Field == "First Name" && pf.C_ID == customer.C_ID) 
         .DefaultIfEmpty() 
        from personalLast in personal 
         .Where(pl => pl.Field == "Last Name" && pl.C_ID == customer.C_ID) 
         .DefaultIfEmpty() 
        where customer.C_ID == 2 
        select new { customer.C_ID, Name = (personalFirst != null ? personalFirst.Value : "") + " " + (personalLast != null ? personalLast.Value : "") }; 

顯然,如果你想要的所有記錄,然後卸下C_ID限制= 2

+0

感謝回答。它的工作.... – Nasir 2012-04-05 10:41:51

+2

請downvoter請解釋爲什麼?因此LINQ的作品可以回答這個問題。如果有更好的方法(可能會有),那麼它的價值就會顯現出來 – kaj 2012-04-05 10:48:54