我正在尝试使用带有以下内容的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
当我使用d.docs.startdate或d.docs.enddate时,“。startdate”和“.enddate”没有出现在intellisense中。我已经链接了表关系并保存了更改,但即使在代码中使用.Include()命令之后,intellisense也无法通过intellisense在docs表中找到startdate和enddate字段。
错误:'System.Collections.Generic.ICollection'不包含'duedate'的定义,并且没有扩展方法'duedate'接受类型'System.Collections.Generic.ICollection'的第一个参数可以找到(是你错过了使用指令或程序集引用?)
......不确定我在这里缺少什么?
答案 0 :(得分:2)
Include()
声明之后 Where()
:
var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
.Include(d => d.docs);
return View(jobs);
答案 1 :(得分:-1)
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);
或同时在一个lambda中的Where(你喜欢什么,两者都有相同的结果):
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()
只是急于加载您的数据。