var query = from ch in Client.wcf.context.CashHeading
where ch.Id_customer == customern//cc.Id
from cs in Client.wcf.context.Cash
where cs.Id_cashheading == ch.Id
from gg in Client.wcf.context.Good
where gg.Id == cs.Id_good
select gg.Price.Value;
我正在处理它的内部错误:
将Linq表达式转换为URI时出错:只能指定查询 最后一次导航后的选项(orderby,where,take,skip)。
我无法理解为什么,完整的来源Here, on GitHub
答案 0 :(得分:3)
基本上,您必须在执行所有导航(from
)之后将where子句压缩为单 where子句,如下所示:
var query =
from ch in Client.wcf.context.CashHeading
from cs in Client.wcf.context.Cash
from gg in Client.wcf.context.Good
where
ch.Id_customer == customern && //cc.Id
cs.Id_cashheading == ch.Id &&
gg.Id == cs.Id_good
select gg.Price.Value;
当然,这似乎似乎是最优的,因为看起来它会交叉连接所有表并且然后执行过滤,但请记住,你可能正在处理IQueryable<T>
interface实现,这意味着很可能会解释这个,然后通过处理翻译的查询来优化。