查询正文必须以LINQ中的select子句或group子句结尾


(from order in db.ProductOrder
 where (from cancel in db.OrderEvents
        where order.OrderId != cancel.OrderId && order.MemberId == MemberId)
 select order).ToList();

它显示一个错误:

查询正文必须以select子句或group子句结尾。

我该如何解决?

您在子查询中没有选择任何内容

from cancel in db.OrderEvents
where order.OrderId != cancel.OrderId && order.MemberId == MemberId
// select something here

此外,您还将此子查询的结果传递给where运算符,该运算符需要布尔结果。我认为您应该就这个子查询调用Any()。类似于:

(from order in db.ProductOrder
 where (from cancel in db.OrderEvents
        where order.OrderId != cancel.OrderId
        select cancel).Any() && order.MemberId == MemberId
 select order).ToList()

在这种情况下,子查询的BTW lambda语法将更短:

db.OrderEvents.Any(oe => oe.OrderId != order.OrderId)

最新更新