【问题标题】:Find Non-Friend Users LINQ [closed]查找非朋友用户 LINQ [关闭]
【发布时间】:2013-05-30 17:39:48
【问题描述】:

我有两张桌子

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

友谊
关系 ID
用户ID
朋友身份

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

【问题讨论】:

  • 到目前为止,您已经列出了一个需求。问题是什么?你被困在哪里了?作为初学者,您是否探索过 Linq 中的左连接?
  • 你没有表现出努力。这就是投反对票的原因。您似乎不是 * 的新手。这是怎么回事?

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


【解决方案1】:

我宁愿考虑

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

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

【讨论】:

    【解决方案2】:

    我想你想要这样的东西:

    (注意:这是徒手)

    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()评估查询并返回真实数据。

    【讨论】:

    • 对不起,如果我不清楚,但我需要获取特定用户的非朋友。在上面的查询中没有这样的条件。
    • 对不起,那没用。它显示用户 ID 为 1 的用户。