linq-to-entity объединяет 3 таблицы и оператор group-by - PullRequest
1 голос
/ 12 июня 2011

Рассмотрим схему базы данных на рисунке.

image

Мне нужно утверждение linq-to-entity, которое будет извлекать авторов и их соответствующие книги, сгруппированные по авторам. Например, я хочу отобразить что-то следующее:

authorName8
  bookTitle27
  bookTitle35
  bookTitle62
authorName37
  bookTitle9
  bookTitle51

Дополнительным ограничением является то, что объект сгруппированных элементов должен возвращаться методом.

Может ли кто-нибудь сформулировать оператор присоединения и группировки по группам: (а) упорядоченный по имени автора, (б) упорядоченный по имени автора и названию книги?

Ответы [ 2 ]

1 голос
/ 12 июня 2011

Вы не упомянули, какую версию EF вы используете, или вам нужно отфильтровать авторов по какому-либо условию или по книгам по какому-либо условию. Общий запрос, который получит все, будет выглядеть так:

List<Author> authorsWithBooks = 
                 context.
                 Authors.
                 Include(a => a.Books). // For EF 4.1
                 /*Include("Books"). instead for previous versions of EF */
                 /*Where(a => !a.IsDeleted). if you want to filter the authors */
                 ToList();

Если вы хотите отфильтровать коллекции книг, вам придется написать более сложный запрос.

0 голосов
/ 12 июня 2011

var query = (от клиента в MyDataContext. Другой выбор автора) .Включая (author => author.Books);

Это позволит вам найти всех авторов и загрузить книги для лучшей производительности.

...