Kha*_*Ali 0 c# linq asp.net linq-to-entities entity-framework
所以我试着按照这个例子在这个LINQ查询的where子句中有一个子查询.
var innerquery =
from app in context.applications
select new { app.app_id };
IEnumerable<postDatedCheque> _entityList = context.postDatedCheques
.Where(e => innerquery.Contains(e.appSancAdvice.application.app_id));
Run Code Online (Sandbox Code Playgroud)
其目的是选择那些记录postDatedCheques已APP_ID在应用程序表.
但是我在where子句中跟踪了错误:
我的编码错误是什么?
我认为简单的联接可以完成这项工作.它将过滤掉没有相对'app'的'支票':
var _entitylist =
from cheque in context.postDatedCheques
join app in context.applications on cheque.appSancAdvice.application equals app
select cheque;
Run Code Online (Sandbox Code Playgroud)
编辑:
使用a的解决方案.Contains(...)将被翻译成SQL IN语句.这将是非常低效的.Linq join被翻译成SQL INNER JOIN,如果您的数据库架构得到很好的修整(FK,索引),这是非常有效的
关于什么?
IEnumerable<postDatedCheque> _entityList = context.postDatedCheques.Where(
e => context.applications.Any(
x => e.appSancAdvice.application.app_id == x.app_id));
Run Code Online (Sandbox Code Playgroud)
如果要使用两个语句,请将第一个语句设置为表达式函数。
Expression<Func<string, bool>> innerQuery =
x => context.applications.Any(y => y.app_id == x);
IEnumerable<postDatedCheque _entityList =
context.postDatedCheques.Where(
x => innerQuery(x.appSancAdvice.application.app_id));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18550 次 |
| 最近记录: |