2013-05-30 30 views
-4

我有2个表寻找非好友用户LINQ

用户
用户ID
用户名
名字
姓氏

友谊
RelationId
用户ID
FriendId

我需要返回记录不存在于友谊表中的所有用户。当用户的UserId位于Friendship表的UserId或FriendId列时,用户可以成为用户的好友。

+0

到目前为止,你已经上市的要求。问题是什么?你卡在哪里?作为初学者,你有没有探索Linq中的左连接? –

+2

你不显示努力。这是获得降低成本的原因。你似乎不是在stackoverflow中的新手。这是怎么发生的? – Oybek

回答

1

我想你想是这样的:

(注:这是免费的手)

int userId = 1; 
var userFriends = context.Users 
    .Where(u => u.ID = userId) 
    .SelectMany(u => u.FriendShips) 
    .Select(fs => fs.Friend); 
var nonFriends = context.Users 
    .Where(u => u.ID != userId) 
    .Except(userFriends); 

注意nonFriends查询。请致电.ToList()评估查询并返回实际数据。

+0

对不起,如果我不清楚,但我需要得到特定用户的非朋友。在上面的查询中没有这样的条件。 –

+0

对不起,但没有奏效。它向用户显示用户ID 1. –

+0

@PitDigger请参阅编辑。 –

1

我宁愿认为

var users = context.Users.Where(u => !u.Friendships.Any() && !u.Friendships1.Any()); 

据我了解,用户可以在任何一侧,UserId以及FriendId