Фильтрация списка результатов через таблицу соединений в EF Core - PullRequest
1 голос
/ 10 марта 2019

Я использую EF Core версии 2.2. У меня есть три таблицы:

  1. Пользователь : UserId, FirstName, LastName
  2. Book : BookId, BookName
  3. UserBook : UserId, BookId <- объединить таблицу для связи «многие ко многим» между пользователем и книгой </li>

Я хотел бы получить список книг, связанных с определенным идентификатором пользователя.

Я пробовал:

var books = await _context.Books
                .Include(ub => ub.UserBooks.Where(f => f.UserId == id))
                .ToListAsync();

но, увы, это не работает. Я получаю сообщение об ошибке: Лямбда-выражение свойства Include 'ub => {из UserBook в ub.UserBooks, где ([f] .UserId == __id_0) select [f]}' недопустимо.

Как я могу получить список книг, связанных с определенным идентификатором пользователя? Спасибо

1 Ответ

2 голосов
/ 10 марта 2019

Вам нужно будет извлечь фильтр where из Include - include используется для быстрой загрузки, а не для фильтрации

Запрос на поиск всех книг, связанных с данным пользователем:

var books = await _context.Books
            .Include(b => b.UserBooks)
            .Where(b => b.UserBooks.Any(ub => ub.UserId == id))
            .ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...