Выберите только 1 ребенка от каждого родителя - PullRequest
3 голосов
/ 02 июня 2011

Один Author может иметь много Book.Таблица Book содержит Author_Id.

Я хочу запрос LINQ, который возвращает IQueryable<Book> (поэтому я могу перемещаться с Book.Author.Name и прочее), но только 1 книга на автора.

Как мне это сделать с помощью LINQ?

Ответы [ 2 ]

4 голосов
/ 02 июня 2011

Уверен, что это так:

var books = from a in authors
            from b in a.Books.Take(1)
            select b);

Редактировать: Меньше хаки способ сделать это:

var books = authors.Select(author => author.Books.First())
                   .Select(book => book);
3 голосов
/ 02 июня 2011
var authorsWithFirstBook = 
    from book in Books
    group book by book.Author into authorBooks
    select authorBooks.First();

Это должно дать вам первую книгу в группе.

Вы должны быть в состоянии сделать

foreach (var book in authorsWithFirstBook) {

  Console.WriteLine(book.Author.FirstName);
}
...