检查数据库ef 6中是否存在实体的“列表”

时间:2019-03-31 13:54:37

标签: c# .net entity-framework

我想用EF6检查数据库中是否存在实体的“列表”。

我尝试了几种方法,但没有找到解决方案。

最有希望的是:

 public bool ChatWithMembersDoesExistYet(List<User> members)
 {
    return _context.Chats
           .Include(c => c.Members)
           .Any(x => x.Members.Select(y => y.Member)
           .Equals(members));
 }

但是它总是返回false。所以我想我做错了。 总体而言,我想检查是否与成员聊天。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

列表上的Equals方法为该列表的每个成员调用一个Equals,因此您必须在用户类中定义自己的覆盖方法。

public override bool Equals(object obj)
{
    var user= obj as User;

    if (user == null)
    {
        return false;
    }

    return user.Id == this.Id;
}

答案 1 :(得分:0)

我的助手是SequenceEquals

public bool ChatWithMembersDoesExistYet(List<User> members)
{
      return _hankContext.Chats
                         .Any(x => x.Members
                         .Select(y => y.Member)
                         .Select(y => y.Id)
                         .OrderByDescending(z => z)
                         .SequenceEqual(members
                                        .Select(y => y.Id).OrderByDescending(z => z)));
}