2016-05-28 7 views
-1

私は、次の表があります。どのように私はlinqで参加することができますか?

ユーザーを

 
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

@ブレンダン:どうしたのですか?あなたはそれが短すぎると感じたので?彼の編集前でさえ、答えは元気だった。 – sstan

+0

なぜこれがupvotedことを確認してください。 'u.id'をフィルタリングし、結合後に' u'のプロパティを返します。これにより、ユーザー '1'の情報が複数回(各関係ごとに1行ずつ)返されます。友人の情報は返されません。 – Rob

関連する問題