Вот максимально упрощённый пример. Есть 3 модели
public class Book
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
public List<AuthorBook> AuthorsBooks { get; set; } = new List<AuthorBook>();
}
public class Author
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public List<AuthorBook> AuthorsBooks { get; set; } = new List<AuthorBook>();
}
public class AuthorBook
{
public int AuthorId { get; set; }
public Author Author { get; set; }
public int BookId { get; set; }
public Book Book { get; set; }
}
Задача - получить все книги конкретного автора по authorId. Я писал что-то вроде такого
public IEnumerable<Book> GetBooksByAuthor(int authorId)
=> context.Books
.Include(book => book.AuthorsBooks
.Where(authorBook => authorBook.AuthorId == authorId))
.ThenInclude(authorBook => authorBook.Person)
.Where(book => book.AuthorsBooks.Count > 0);
context - это класс, унаследованный от DbContext.
Данный код выводит вообще все книги, фильтрация не работает. В чём ошибка и как это сделать?