在LINQPad中执行以下查询时:
var innerquery = Bills.Where(e => e.id == 15);
var entity = Customer
.Join(applications, cust => cust.cust_id, app => app.cust_id,
(cust, app) => new { Customer = cust, application = app })
.Join(advices, cust => cust.application.app_id, sa => sa.app_id,
(cust, sa) => new { Customer = cust, advice = sa })
.Where(x => x.advice.status_id == 4)
.Where(e => innerquery.Any(a => a.com_id == e.advice.application.com_id)) // exception at this line
.Where(e => innerquery.Any(a => a.fnd_id == e.advice.application.fnd_id))
.Select(x => x.Customer.Customer.cust_id);
entity.Dump();
它以LINQPad中的异常结束:
'LINQPad.User.appSancAdvice'不包含'application'的定义,也没有扩展方法'application'接受类型为'LINQPad.User.appSancAdvice'的第一个参数'(按F4添加使用指令或汇编参考)
场景背后的简要逻辑是只选择客户
customer
实体与application
application
实体与advice
application
实体与bill
(table structure)
客户
cust_id
应用
APP_ID
CUST_ID
com_id
fnd_id
建议
APP_ID
status_id
纸币
bill_id
com_id
fnd_id
答案 0 :(得分:1)
它得到了解决。错误行的正确导航路线是:
.Where(e => innerquery.Any(a => a.com_id == e.customer.application.com_id)) // exception at this line
.Where(e => innerquery.Any(a => a.fnd_id == e.customer.application.fnd_id))
错误是由e.advice.application