C# 如何在linq中使用join?

C# 如何在linq中使用join?,c#,linq,C#,Linq,我有以下表格: 用户 id | name | nick 在上面的片段中 where r.idUser1== 1 条件是错误的,请使用,其中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 &&

我有以下表格:

用户

id | name | nick 在上面的片段中

 where r.idUser1== 1
条件是错误的,请使用
,其中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
的所有朋友的姓名。这实际上是一条评论,不是答案。@Brendan:这怎么不是答案?因为你觉得太短了?甚至在他的编辑之前,答案都是好的。请注意,为什么这一点会被提高投票率。它在
u.id
上进行过滤,然后在加入后返回
u
上的属性。这将多次返回用户
1
的信息(每个关系一行)。它不会返回朋友的信息。是的,我已经纠正了我的错误。谢谢你给了我正确的方向@Rob@DharmeshParmar这还不回朋友们。如果用户有朋友,它只会返回id为
1
的用户。据我所知,发布的原始代码是正确的。
 where r.idUser1== 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();