查找非朋友用户LINQ

时间:2013-05-30 17:39:49

标签: asp.net linq entity-framework linq-to-sql

我有2张桌子

用户
用户ID

名字
姓氏

友谊
RelationId
用户ID
FriendId

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

2 个答案:

答案 0 :(得分: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()评估查询并返回实际数据。

答案 1 :(得分:1)

我宁愿想到

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

据我所知,用户可以在任何一方,UserId以及FriendId