Проверьте, существует ли «список» сущностей в db ef 6 - PullRequest
0 голосов
/ 31 марта 2019

Я хочу проверить, существует ли «список» сущностей в моей базе данных с EF6.

Я пробовал несколько способов, но не нашел решения.

Самым многообещающим было:

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

Но он всегда возвращал ложь. Поэтому я думаю, что делаю что-то не так. В общем, я хочу проверить, существует ли еще чат с участниками. Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Мой помощник был 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)));
}
0 голосов
/ 31 марта 2019

Метод Equals в списке вызывает Equals для каждого члена этого списка, поэтому вы должны определить свой собственный метод переопределения в пользовательском классе.

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

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

    return user.Id == this.Id;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...