2016-05-28 33 views
-1

我有以下表格:如何在linq中使用join?

用戶

 
id | name | nick 

關係

 
idUser1 | idUser2 | status 

我怎樣才能找出好友的名字(其中的關係表,status = "friend") ,對於ID爲1的用戶(加入relationship.idUser1

我試過,但它沒有工作

dcChatDataContext db = new dcChatDataContext(); 
var name = from u in db.user 
join r in db.relationship on u.id equals r.idUser2 
where r.idUser1 == 1 
select new { completename = u.name+ ' ' + u.nick }; 
+1

[101個LINQ樣品](https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b) – shadow

+0

您的代碼,在第二一目瞭然,將實際上完美地工作。你能否進一步解釋爲什麼它不是你所期望的?它目前將返回用戶'1'的所有朋友的名字。 – Rob

回答

2

在你上面的代碼中

where r.idUser1== 1 

條件是錯誤的使用where u.id==1,而不是說。

完整代碼段是如下:

dcChatDataContext db = new dcChatDataContext(); 
var name = (from u in db.user 
join r in db.relationship on u.id equals r.idUser1 
where u.id== 1 && r.status=="friend" 
select new { completename = u.name+ ' ' + u.nick }).FirstOrDefault(); 
+1

這真的是一個評論,而不是一個答案。 –

+0

@Brendan:這不是一個答案嗎?因爲你覺得太短了?即使在編輯之前,答案也沒有問題。 – sstan

+0

請注意,爲什麼這是upvoted。它在'u.id'上過濾,然後在加入後在'u'上返回屬性。這將多次返回用戶'1'的信息(每個關係一行)。它不會返回朋友的信息。 – Rob