我正在使用linq连接多个表。问题是,我必须连接一个表,该表在某些行中会有一些空值。我认为联接本身运行良好,但是当我遍历ViewBag时,由于空值而导致错误。
这是我的代码: 控制器:
ViewBag.coaching = (from kst in db.kursister
join kursus_kursist in db.kursus_kursist
on kst.kursist_id equals kursus_kursist.kursist_id
join kursus in db.kurser
on kursus_kursist.kursus_id equals kursus.kursus_id
join coach in db.jobcoach
on kst.kursist_id equals coach.kursist_id into coachJoin
where kursus.kursus_id == id
from cj in coachJoin.DefaultIfEmpty()
select new CoachHoldModel { kst = kst, kursus = kursus, cj = cj });
这是我的观点:
@model IEnumerable<Itucation.Models.CoachHoldModel>
@{
ViewBag.Title = "Karriere Coach Hold";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Protokol</h2>
<div>
<h3>
@{
foreach (var navn in (ViewBag.kursus))
{
@navn.kursus_navn
}
}
</h3>
<table class="table-bordered">
<tr>
<td colspan="2" style="border:0;"></td>
<th>Status</th>
<td><img src="~/Content/Images/logo.png" height="30" /></td>
</tr>
@{
foreach (var item in (ViewBag.coaching))
{
<tr>
<td>@item.kst.fornavn</td>
<td>@item.kst.efternavn</td>
<td>
@item.cj.status
</td>
<td colspan="2"></td>
</tr>
}
}
</table>
</div>
@ item.cj.status将包含空值。
forech循环遍历一系列学生。有些学生有状态设置,有些则没有。我想为具有状态价值的学生显示价值-忽略其他人。
任何帮助将不胜感激。
答案 0 :(得分:1)
为什么不测试它是否不为null并显示状态?
<td>
@if (item.cj != null) // or item.cj?.status
{
<span>@item.cj.status</span>
}
</td>