2015-09-07 31 views
0

我正在從具有多個聯接和別名的SQL查詢創建C#LINQ語句。我在構建LINQ時遇到了一些麻煩。具有多個內部聯接和別名的SQL查詢的LINQ語法

的SQL:

SELECT 
store.Name as 'Store', 
store.CreatedOn as 'StoreCreated', 
supplier.Name as 'Supplier', 
supplier.CreatedOn as 'SupplierCreated', 
farm.Name as 'Farm', 
farm.CreatedOn as 'FarmCreated', 
FROM Users store 

INNER JOIN UserRelationship toSupplier on store.ID = toSupplier.YId 
INNER JOIN Users supplier ON supplier.ID = toSupplier.XId 
INNER JOIN UserRelationship toFarm ON store.ID = toFarm.XId 
INNER JOIN Users farm ON farm.ID = toFarm.YId 

WHERE 

store.Active= '1' 
AND 
supplier.Active = '1' 
AND 
farm.Active = '1' 

這返回行顯示三方和日期之間的關係。

所以,到目前爲止,我有以下LINQ:

var newUserList = from store in Users 
        join toSupplier in UserRelationship on store.ID = toSupplier.YId 
        join supplier in Users on supplier.ID = toSupplier.XId 
        join toFarm in UserRelationship on store.ID = toFarm.XId 
        join farm in Users on farm.ID = toFarm.YId 

我在正確的軌道上?任何幫助,將不勝感激。

+0

要麼使用「等於」或「==」 – dan

回答

1

LINQ join語法使用equals關鍵字,而不是在=連接條件:

var newUserList = from store in Users 
        join toSupplier in UserRelationship on store.ID equals toSupplier.YId 
        join supplier in Users on supplier.ID equals toSupplier.XId 
        join toFarm in UserRelationship on store.ID equals toFarm.XId 
        join farm in Users on farm.ID equals toFarm.YId 
        select ... 
+0

多謝您使用正確的語法提示! –