如果一个用户跟随另一个用户,则Linq表达式签入

时间:2015-02-13 15:01:18

标签: c# linq

我有一张桌子可以存储关注者和跟随者。这些是基于他们的指南。

在我想要建立这种关系之前,我想检查并确定此人是否已经关注此人

修改

bool userExist = _databaseEntities.Users.Count(e => e.UserName == followerName) > 0;

        if(userExist)
        {
            var user1 = _databaseEntities.Users.FirstOrDefault(y => (y.UserName == username));
            var user2 = _databaseEntities.Users.FirstOrDefault(z => (z.UserName == followerName));

所以我得到两个用户并检查他们是否在那里,然后检查他们的userIds是否在关注者表中形成关系。

所以我有_db.Followers.Count(c => (c.UserId == user1.UserId && c.FollowerId == user2.UserId) < 0 );

但即使关系存在,它也总是为0

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你有一个这样的表:

 |  UserId  |  FollowerId  |
 |----------|--------------|
 |  Homer   |  Marge       |
 |  Homer   |  Lisa        |
 |  Marge   |  Homer       |
 |  Marge   |  Bart        |
 |  Bart    |              |
 |  Lisa    |  Bart        |
 |----------|--------------|

相关的User类应至少包含UserId的字符串属性和用户集合(用户正在关注的用户) 所以你可以在User里面有一个方法:

    public bool CanFollow(User followee)
    {
        return !Followee.Any(x => x.UserId == followee.UserId);
    }

它更简单,更符合逻辑,您可以像这样使用它

User homer = _db.Followers.Where(x => x.UserId == "Homer").FirstOrDefault();
User marge = _db.Followers.Where(x => x.UserId == "Marge").FirstOrDefault();

// can Homer follow Marge?
homer.CanFollow(marge);