一个Author
可以有多个Book
。表Book
上有Author_Id
。
我想要一个返回IQueryable<Book>
的LINQ查询(所以我可以使用Book.Author.Name
和东西导航),但每位作者只能预订一本书。
如何使用LINQ做到这一点?
答案 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);
}