2016-04-22 98 views
0

如何將下面的SQL查詢轉換爲LINQ到SQL?左連接和條件LINQ到SQL

select c.ClientID , c.ClientName , case when cca.clientID >0 then 1 else 0 end 'ClientAccess' from Clients c 
left join clientcontactaccess cca ON cca.clientid = c.ClientID and cca.ClientContactID = 2141 
where c.GroupID = 1 

我已經這樣做了,到目前爲止,但不知道如何處理「和cca.ClientContactID = 2141」的條件;

dynamic query = (from c in db.Clientdb.ClientContactAccesscca.ClientIDc.ClientIDGroupfrom cca in GroupDetails.DefaultIfEmpty()where c.GroupID == 1c.ClientIDc.ClientNamecca.ClientID.ToString == null ? 0 : 1); 
+1

查看網頁左外連接︰https://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9 – jdweng

+0

感謝您的鏈接,但無法看到任何與'和'條件的左連接示例。 – user1263981

+0

有一個很好的工具,名叫[Linqer](http://www.sqltolinq.com/)。 Linqer是一個SQL to LINQ轉換工具。它有助於學習LINQ並轉換現有的SQL語句。 –

回答

0

我結束了使用where子句與連接(第二行)

Dim query = (From c In db.Client _ 
       Group Join cca In db.ClientContactAccess.Where(Function(cca) cca.ClientContactID = _contactID) On cca.ClientID Equals c.ClientID _ 
       Into GroupDetails = Group _ 
       From cca In GroupDetails.DefaultIfEmpty() Where c.GroupID = 1 
       Select c.ClientID, c.ClientName, ClientAccess = If(cca.ClientID.ToString Is Nothing, 0, 1)) 

如果有人有更好的解決方案,那麼請做職位,因爲它會增加知識,再加上我是新來的LINQ。

+0

根據所有其他問題,完全是這樣的,我會說你在正確的軌道上。 – pseudocoder