每个父母只选择一个孩子

时间:2011-06-02 00:17:55

标签: c# .net linq sql-server-2008 linq-to-sql

一个Author可以有多个Book。表Book上有Author_Id

我想要一个返回IQueryable<Book>的LINQ查询(所以我可以使用Book.Author.Name和东西导航),但每位作者只能预订一本书。

如何使用LINQ做到这一点?

2 个答案:

答案 0 :(得分:4)

很确定就是这样:

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

编辑:少 hacky 执行此操作的方式:

var books = authors.Select(author => author.Books.First())
                   .Select(book => book);

答案 1 :(得分:3)

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);
}