Entity Framework Core: проблема с методом Contains

Вот моя упрощенная модель БД:

public class Chat
{
public ICollection<ApplicationUser> Users {get; set;} //nav property - represents participants of a chat
}

public class ApplicationUser : IdentityUser // it represents a net-identity user; it does not have any references to chats
{...}

Итак, в классе контроллера я пытаюсь получить чаты, такие как содержать текущего пользователя в качестве участника:

var user = GetUser();
_context.Chats.Where(chat => chat.Users.Contains(user)).ToList();

Этот код вызывает исключение:

Вы не можете использовать тип выражения...ApplicationUser для типа параметра "Microsoft.EntityFrameworkCore.Storage.ValueBuffer" метода "Boolean Contains[ValueBuffer](System.Collections.Generic.IEnumerable`1[Microsoft.EntityFrameworkCore.Storage.Valueuu ], Microsoft.EntityFrameworkCore.Storage.ValueBuffer)"

В чем здесь проблема?

1 ответ

Решение

Вам нужно использовать Any(), как это

 var chatsList =_context.Chats.Where(chat => chat.Users.Any(u => u.id== user.id)).ToList();
Другие вопросы по тегам