Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda:使用.Include()和EF中的链接表数据_C#_Linq_Entity Framework_Lambda - Fatal编程技术网

C# Lambda:使用.Include()和EF中的链接表数据

C# Lambda:使用.Include()和EF中的链接表数据,c#,linq,entity-framework,lambda,C#,Linq,Entity Framework,Lambda,我正在尝试使用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时,“.startdat

我正在尝试使用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时,“.startdate”和“.enddate”不会在intellisense中显示。我已经链接了表关系并保存了更改,但即使在代码中使用.Include()命令,intellisense也无法通过intellisense在docs表中找到startdate和enddate字段

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

…不确定我缺少了什么?

Include()
Where()
语句之后:

var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
             .Include(d => d.docs);
return View(jobs);
var jobs=db.jobs.Where(d=>d.docs.startdate>=date1&&d.docs.enddate d.docs);
返回视图(作业);

Where()中不应该有两个lambda
。因此,您的查询应该如下所示:

var jobs = db.jobs.Where(d => d.docs.startdate >= date1)
                  .Where(d => d.docs.enddate <= date1)
                  .Include(d => d.docs);
return View(jobs);
var jobs=db.jobs.Where(d=>d.docs.startdate>=date1)
.其中(d=>d.docs.enddate d.docs);
返回视图(作业);
或者一个lambda中的Where's(您更喜欢的是,两者的结果相同):

var jobs=db.jobs.Where(d=>d.docs.startdate>=date1&&d.docs.enddate d.docs);
返回视图(作业);

Where()
Include()
的含义并不相同
Where()
过滤您的数据,而
Include()
只需快速加载数据。

删除第二个d=>是正确的,但您可以在Where语句中始终使用两个子句是的,可以,但我认为这样更可读。你用哪种方式都没什么不同。我的回答错了吗?或者你为什么否决它?因为这不是真的,你是说问题在模式中,而不是回答问题说“没有两个lambda”,我的意思是没有“d=>”两次。我想这不足以回答问题。我编辑了我的答案,还发布了第二种方法,即在一个lambda中同时包含这两个条件。这一直失败,因为在intellisense中没有显示“.startdate”和“.enddate”,但是该表在数据库关系中链接正确。为什么此字段没有在intellisense中弹出?请删除第二个d=>应该是d=>d.docs.startdate>=date 1&&d.docs.endates。此操作一直失败,因为“.startdate”和“.enddate”没有在intellisense中显示,但是该表在数据库关系中链接正确。为什么intellisense中没有出现此字段?请尝试关闭文件并关闭visual studio。然后重新打开所有东西,没用。我想发布我的问题,但我不确定是否应该在这里发布。我应该发一个新帖子并链接到那个帖子吗?是的,我会发一个新问题,因为这是一个不同的问题。这个答案解决了原来的问题。
var jobs = db.jobs.Where(d => d.docs.startdate >= date1)
                  .Where(d => d.docs.enddate <= date1)
                  .Include(d => d.docs);
return View(jobs);
var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
                  .Include(d => d.docs);
return View(jobs);