IQueryable изменено в цикле foreach не отображается в поле зрения - PullRequest
0 голосов
/ 30 апреля 2018

Я пытался изменить значение RouteAttr.RoutedForRole, если оно равно SHead, но я проверил во время выполнения, и query не изменилось, даже если оно пошло в цикл foreach и были допустимые записи. Я также попытался добавить цикл foreach в представление, но это ничего не изменило.

public ViewResult Index()
{
    IQueryable<ServiceRequestViewModel> query;
    query = from c in context.ServiceRequests
            select new ServiceRequestViewModel
            {
                ServiceRequestId = c.ServiceRequestId,
                ServiceDescription = c.ServiceDescription,
                RequestNumber = c.RequestNumber,
                Title = c.Title,
                RouteAttr = c.RouteAttr,
                LogAttr = c.LogAttr
            };

    foreach (var item in query)
    {
        if (item.RouteAttr.RoutedForRole == WorkflowRole.SHead)
        {
            item.RouteAttr.RoutedForRole = WorkflowRole.HRManager;
        }
    }
    return View(query);
}

Ниже мой обзор сетки.

@Html.Grid(Model).Columns(col =>
{
    col.Add(o => o.ServiceRequestId)
        .Encoded(false)
        .Sanitized(false)
        .Filterable(true)
        .Titled("SRF No.")
        .SetWidth(150)
        .RenderValueAs(o => Html.ActionLink(o.RequestNumber, "Details", new { id = o.ServiceRequestId }));
    col.Add(o => o.Title)
        .Filterable(true)
        .SetWidth(400)
        .Titled("Title");
    col.Add(o => o.LogAttr.CreatedBy)
        .Filterable(true)
        .Titled("Requestor");
    col.Add(o => o.RouteAttr.RoutedForRole)
            .Filterable(true)
            .Titled("Status");
}).WithPaging(10).Sortable(true)

Мне сообщили в комментариях, почему он не возвращается, поэтому теперь я хочу знать, как обновить элемент в iqueryable и вернуть его в поле зрения.

1 Ответ

0 голосов
/ 30 апреля 2018

Так же, как то, что @Enigmativity сказал в комментариях, я изменил запрос в массив.

var data = query.ToArray();

Он предложил, чтобы я вернул data, но это не сработало, поскольку ServiceRequestViewModel требует тип IQueryable. Поэтому я изменил его обратно на тип IQueryable, чтобы я мог вернуть его для просмотра.

var queryable = data.AsQueryable();
...