C# 如果一个用户正在跟踪另一个用户,则Linq表达式签入
我有一个存储追随者和追随者的表格。这些都是基于他们拥有的guid 在我想建立这种关系之前,我想检查一下这个人是否已经在跟踪这个人了 编辑C# 如果一个用户正在跟踪另一个用户,则Linq表达式签入,c#,linq,C#,Linq,我有一个存储追随者和追随者的表格。这些都是基于他们拥有的guid 在我想建立这种关系之前,我想检查一下这个人是否已经在跟踪这个人了 编辑 bool userExist=\u databaseEntities.Users.Count(e=>e.UserName==followerName)>0 if(userExist) { var user1 = _databaseEntities.Users.FirstOrDefault(y =>
bool userExist=\u 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));
所以我得到两个用户,检查他们是否在那里,然后检查他们的用户名是否在形成关系的追随者表中
所以我有了这个\u db.Followers.Count(c=>(c.UserId==user1.UserId&&c.FollowerId==user2.UserId)<0)代码>
但即使存在关系,它也总是为0
我怎样才能做到这一点呢?如果我理解正确,您有这样一张表:
| UserId | FollowerId |
|----------|--------------|
| Homer | Marge |
| Homer | Lisa |
| Marge | Homer |
| Marge | Bart |
| Bart | |
| Lisa | Bart |
|----------|--------------|
public bool CanFollow(User followee)
{
return !Followee.Any(x => x.UserId == followee.UserId);
}
并且相关的用户类应该至少包含UserId的string属性和用户集合(用户正在跟踪的用户)
因此,您可以在用户内部使用如下方法:
| UserId | FollowerId |
|----------|--------------|
| Homer | Marge |
| Homer | Lisa |
| Marge | Homer |
| Marge | Bart |
| Bart | |
| Lisa | Bart |
|----------|--------------|
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);
为什么您要将bool
与0
兼容?您的代码:(…&&&&&…)<0
为了更清楚一点,将计数
与<0
进行比较将始终为假:)@NikolayKostov good point。你可以改变计数我已经试过了!任何,但它给了我真实的所有时间,即使我使用相同类型的用户bool notRelation=_db.Followers.Any(c=>(c.UserId==user1.UserId&&c.FollowerId==user2.UserId))代码>