我有一张桌子可以存储关注者和跟随者。这些是基于他们的指南。
在我想要建立这种关系之前,我想检查并确定此人是否已经关注此人
修改
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
我该怎么做?
答案 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);