0

我正在尝试使用 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”没有出现在智能感知中。我已经链接了表关系并保存了更改,但是即使在代码中使用了 .Include() 命令后,intellisense 也无法通过 intellisense 在 docs 表中找到 startdate 和 enddate 字段。

错误:“System.Collections.Generic.ICollection”不包含“duedate”的定义,并且找不到接受“System.Collections.Generic.ICollection”类型的第一个参数的扩展方法“duedate”(您是否缺少使用指令还是程序集引用?)

...不确定我在这里缺少什么?

4

2 回答 2

2

Include()声明后Where()

var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
             .Include(d => d.docs);
return View(jobs);
于 2013-06-07T21:04:28.950 回答
-1

您不应该在Where(). 所以你的查询应该是这样的:

var jobs = db.jobs.Where(d => d.docs.startdate >= date1)
                  .Where(d => d.docs.enddate <= date1)
                  .Include(d => d.docs);
return View(jobs);

或者两者都在一个 lambda 中(你更喜欢什么,两者都有相同的结果):

var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
                  .Include(d => d.docs);
return View(jobs);

theWhere()和 the 的Include()意思不一样。Where()过滤您的数据,而Include()只是急切地加载您的数据。

于 2013-06-07T21:14:53.013 回答