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指令或程序集引用?)

…不知道我错过了什么吗?

Lambda:对EF中的链接表数据使用. include()

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()只是急于加载您的数据