wkololo_4ever
@wkololo_4ever

Как не получать один и тот же обьект два раза?

Есть вьюшка, в модель которой получаю все разделы форума. Далее прохожу по всем разделам и вывожу по 3 последних темы для каждого раздела, а у каждой из 3х тем дату последнего сообщения и имя автора.
@foreach (AuthorizationNew.Models.Section sc in Model)
{
    <div id="ThemeName">@Html.ActionLink(@sc.SectionName, "GetSection",
 new { idSection = @sc.Id })</div>

    foreach (AuthorizationNew.Models.Theme th in
 sc.Theme.OrderByDescending(m => m.ThemeDate).Take(3).ToList())
    {
        <div class="Thems">
            @Html.ActionLink(@th.ThemeName, "GetTheme", new { idTheme = @th.ThemeId })
            @if (th.FMessage.Count > 0)
            {
              @th.FMessage.OrderByDescending(m => m.ForumMessageId).FirstOrDefault().MessageDate
                @:От @th.FMessage.OrderByDescending(m => m.ForumMessageId).FirstOrDefault().User.DisplayName
            }
        </div>
    }
}


В моменте
@th.FMessage.OrderByDescending(m => m.ForumMessageId).FirstOrDefault().MessageDate
                @:От @th.FMessage.OrderByDescending(m => m.ForumMessageId).FirstOrDefault().User.DisplayName
я два раза фильтрую список и получаю один и тот же последний обьект. Как можно оптимизировать эту часть, не перенося логику выборки элементов в контроллер?
  • Вопрос задан
  • 2970 просмотров
Решения вопроса 1
@t0di
Используйте конструкцию @{ }, а если нужно указать текст там, то используйте . И никто не запрещает объявлять переменные.
@if (th.FMessage.Count > 0)
            {
              var message = th.FMessage.OrderByDescending(m => m.ForumMessageId).FirstOrDefault();
              @message.MessageDate
                <text>От</text> @message.User.DisplayName
            }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы