2010-04-28 34 views
1

是有可能做多個聯接:LINQ2SQL和多個連接

from g in dataContext.Groups 
join ug in dataContext.UsersGroups on g.Id equals ug.GroupId 
join u in dataContext.Users on u. 
where ug.UserId == user.Id 
select GroupRepository.ToEntity(g); 
以上的所有樣品中

是罰款,直到我按「」在第三行結束。我期望得到intellisense並寫入u.Id == ug.UserId但它不會出現。當然這個代碼不會在編譯後。

我錯了什麼?

答案:別名的順序很重要。所以我用ug.UserId equals u.Id

+0

我沒有用之前在LINQ加入,但你要達到什麼樣的(或我認爲你試圖達到的目標,可能會有很大的差異:P)我已經做了好幾次,只使用像這樣的語句:從db中的g中的db中的g中的db.UserGroups中的from u中的db .Users where g.Id == ug.GroupId && ug.UserId == user.Id && g.Name == SomeVar select u;這應該會讓您的組中的所有用戶名稱爲SomeVar。 – Alxandr 2010-04-28 02:03:20

+0

hmmmm ....然後我需要閱讀更詳細的linq2sql。我認爲linq2sql'join'等同於sql的'join'。不是嗎? – zerkms 2010-04-28 02:05:34

+0

http://msdn.microsoft.com/en-us/library/bb425822.aspx#linqtosql_topic12在這裏我看到多個連接的查詢,但我不能重複相同的語法%) – zerkms 2010-04-28 02:10:32

回答

0

下面的代碼對我的作品中的LINQ to SQL(Northwind數據庫)

var dataContext = new NorthwindDataContext(); 
var x = from c in dataContext.Customers 
     join o in dataContext.Orders on c.CustomerID equals o.CustomerID 
     join od in dataContext.Order_Details on o.OrderID equals od.OrderID 
     select c; 
+0

我標記這個答案只是因爲我必須選擇一些東西,不是因爲它實際上回答了我的問題;-) – zerkms 2010-04-28 02:14:02

+0

嘗試一次拆分您的代碼。即...首先刪除第二個連接,然後使選擇語句,並簡單地選擇g。看看它是否compies和運行。現在添加第二個連接,但請單獨選擇。編譯。等等... – 2010-04-28 02:16:51

+0

我已經在添加我的prev評論前已經回答了我的問題;-) btw,我知道如何調試以及如何編寫代碼迭代。正如我所說(爲了防止這種類型的建議),我在最後加點到底都是精細和編譯;-) – zerkms 2010-04-28 02:41:04