Как обрабатывать ViewBag с нулевыми значениями из linq с левым внешним соединением в бритвенном представлении - PullRequest
0 голосов
/ 12 апреля 2019

Я объединяю несколько таблиц, используя linq.Проблема в том, что мне нужно присоединиться к таблице, которая будет иметь нулевые значения в некоторых строках.Я думаю, что само соединение работает нормально, но когда я перебираю свой ViewBag, я получаю ошибку из-за нулевых значений.

Это мой код: Controller:

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 просматривает список студентов.У некоторых студентов установлен статус, у некоторых - нет.Я хотел бы отобразить значение для студентов, которые имеют значение статуса - и игнорировать другие.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 12 апреля 2019

Почему бы не проверить, не является ли оно нулевым, а затем показать статус?

<td>
    @if (item.cj != null) // or item.cj?.status
    {
        <span>@item.cj.status</span>
    }
</td>
...