从每个父对象中只选择一个子对象


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

我想要一个返回IQueryable<Book>的LINQ查询(这样我就可以使用Book.Author.Name之类的东西进行导航(,但每个作者只能有一本书。

我如何使用LINQ做到这一点?

很确定这就是:

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

最新更新