Lambda:对EF中的链接表数据使用. include()
本文关键字:include 数据 链接表 EF Lambda | 更新日期: 2023-09-27 18:17:40
我正在尝试使用lambda .Include()过滤链接表数据:
var jobs = db.jobs.Include(d => d.docs)
.Where(d => d.docs.startdate >= date1 && d => d.docs.enddate <= date1);
return View(jobs);
这不起作用。有人知道正确过滤链接表数据的正确语法是什么吗?谢谢!
更新:d.docs.startdate
d.docs.enddate
"。起始日期"answers"。当我使用d.s docs.startdate或d.s docs.enddate时,enddate"不会在智能感知中显示。我已经链接了表关系并保存了更改,但即使在代码中使用。include()命令后,智能感知也无法通过智能感知在docs表中找到开始日期和结束日期字段。
错误:"System.Collections.Generic。ICollection'不包含'duedate'的定义,也没有扩展方法'duedate'接受类型为'System.Collections.Generic '的第一个参数。可以找到ICollection(您是否缺少using指令或程序集引用?)
…不知道我错过了什么吗?
Where()
语句后的Include()
:
var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
.Include(d => d.docs);
return View(jobs);
在Where()
中不应该有两个lambdas。所以你的查询应该是这样的:
var jobs = db.jobs.Where(d => d.docs.startdate >= date1)
.Where(d => d.docs.enddate <= date1)
.Include(d => d.docs);
return View(jobs);
或两个Where's in one lambda(你更喜欢的是,两个都有相同的结果):
var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
.Include(d => d.docs);
return View(jobs);
Where()
和Include()
的含义不相同。Where()
过滤您的数据,而Include()
只是急于加载您的数据