我正在尝试编写一些LINQ来加入这些表,但它给了我错误。这是我的代码
public PartialViewResult Getjobs(int id)
{
using (var db = new MTEntities())
{
var jobs = db.jobs.Include(j => j.jobslist)
.Include(jl => jl.jobslist.model_jobslist
.Where(aa=>aa.jobslist.JobsListID==jl.jobslist.model_jobslist.JobsListID))
.Where(bki => bki.BookingID==id)
.ToList();
if (jobs != null)
{
return PartialView("_JobDetails", jobs);
}
我正在尝试从model_joblist表中显示传入预订ID的大致时间。
<th>
@Html.DisplayNameFor(model =>model.jobslist.model_jobslist.ApproxTime))
</th>
这可能吗?
错误5'System.Collections.Generic.ICollection'不包含'JobsListID'的定义,并且没有可以找到接受类型'System.Collections.Generic.ICollection'的第一个参数的扩展方法'JobsListID'(是你错过了using指令或程序集引用?)Controllers \ BookingController.cs 90 97 MechanicTracker 这就是错误
答案 0 :(得分:2)
这里有多个错误。首先,我建议查找include包含不用于连接。您根本不需要它来使查询起作用,但出于性能原因它会很有用。
其次,传递到_JobDetails
的作业将属于List<job>
类型,因此@Html.DisplayNameFor(model =>model.jobslist.model_jobslist.ApproxTime))
是错误的。
第三,如果要显示近似值,则需要@Html.DisplayFor
而不是@Html.DisplayNameFor
。但是,由于代码片段位于第th个元素中,您可能确实需要DisplayNameFor,并且您根本没有发布相关的代码。
要创建查询,您只需使用:
var jobs = db.jobs.Where(bki => bki.BookingID==id).ToList();
如果您需要它们以提高性能,请稍后再添加Include
。请参阅答案末尾的链接以获取相关帮助。
然后显示它将取决于你想要什么。你将有一份工作清单,所以它可能是这样的:
foreach (var job in Model) {
...Some HTML...
job.jobslist.model_jobslist.ApproxTime.ToString("whatever date format you want")
...Some more HTML...
}
一些有用的链接: