【发布时间】:2011-06-02 00:17:54
【问题描述】:
一个Author 可以有多个Book。表Book 上面有Author_Id。
我想要一个返回 IQueryable<Book> 的 LINQ 查询(这样我就可以使用 Book.Author.Name 和其他东西进行导航),但每位作者只有一本书。
如何使用 LINQ 做到这一点?
【问题讨论】:
标签: c# .net linq sql-server-2008 linq-to-sql
一个Author 可以有多个Book。表Book 上面有Author_Id。
我想要一个返回 IQueryable<Book> 的 LINQ 查询(这样我就可以使用 Book.Author.Name 和其他东西进行导航),但每位作者只有一本书。
如何使用 LINQ 做到这一点?
【问题讨论】:
标签: c# .net linq sql-server-2008 linq-to-sql
很确定是这样的:
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);
【讨论】:
Take(1) 感觉很“hacky”!
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);
}
【讨论】:
IQueryable<Book>。完全按照 OP 的要求 :)。
Books关系是否被定义?