Исключение с лямбда-экспрессом - PullRequest
0 голосов
/ 14 января 2010

У меня странное поведение. Приведенный ниже код работал долгое время, но теперь я не знаю, почему я ничего не изменил, у меня есть исключение. Я получаю сотрудника из своей базы данных через Nhibernate, в _model.List есть список сотрудников. У меня есть исключение на линии juste до возврата (где я строю массив). Я форматирую данные, чтобы использовать их в jqGrid.

Исключением является: Ссылка на объект не установлена ​​для экземпляра объекта.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ListToGrid(string sidx, string sord, int page, int rows)
{
    _model.List = _employeeService.List();

    Func<Employee, string> order;
    switch (sidx.ToUpper())
    {
        case "FIRSTNAME": order = x => x.FirstName; break;
        case "LASTNAME": order = x => x.LastName; break;
        default: order = x => x.Login; break;
    }

    if (sord.ToUpper() == "ASC")
        _model.List = _model.List.OrderBy(order).ToList<Employee>();
    else
        _model.List = _model.List.OrderByDescending(order).ToList<Employee>();

    var data = _model.List.Select(c => new { id = c.Id, cell = new[] { c.Id.ToString(), c.Login.ToString(), c.FirstName, c.LastName, c.IsActive.ToString() } }).ToArray();
    return new JsonResult { Data = new { page = page, records = data.Length, rows = data, total = 1 } };            
}

Ответы [ 2 ]

4 голосов
/ 14 января 2010

Итак, вы говорите, что эта строка

var data = _model.List.Select(c => new { id = c.Id, cell = new[] { 
    c.Id.ToString(),
    c.Login.ToString(),
    c.FirstName,
    c.LastName,
    c.IsActive.ToString()
} }).ToArray();

выдает исключение. Тогда вполне вероятно, что либо c.Id, c.Login, либо c.IsActive равно нулю хотя бы для одного c в _model.List, поскольку это единственные свойства c, для которых требуется разыменование. Это ваши главные виновники, поэтому начните проверять ваши данные.

1 голос
/ 14 января 2010

По всей вероятности, в вашей базе данных есть строка с Id, Login или IsActive, установленной в null. Можете ли вы опубликовать всю трассировку стека для получения дополнительной информации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...