【发布时间】:2010-08-12 00:20:34
【问题描述】:
抱歉标题含糊不清,不知道我应该使用什么措辞。我有一个类似的查询(重新工作以节省空间):
SELECT
*
FROM
Publishers p
INNER JOIN Authors a
ON p.AuthorID = a.AuthorID
INNER JOIN Books b
ON a.BookID = b.BookID
WHERE
p.PublisherName = 'Foo'
ORDER BY
b.PublicationDate DESC
我试着改写成这样:
var query =
from publisher in ctx.Publishers
from author in publisher.Authors
from books in author.Books
...
但出现以下错误:
Error 1 An expression of type 'Models.Books' is not allowed in a
subsequent from clause in a query expression with source type
'System.Linq.IQueryable<AnonymousType#1>'. Type inference failed in the
call to 'SelectMany'.
我可以像在 SQL 中那样,通过加入表来重新编写 LINQ 以使其工作,但我认为我可以通过它们的关系完成我想做的事情 - 我只是有点困惑为什么我可以获取 publisher.Authors,但不能获取 author.Books。
【问题讨论】:
-
你知道,这实际上对我有用。你能透露一下 LINQ 查询的其余部分吗?我感觉罪魁祸首在那里。
标签: c# linq linq-to-entities