Встроенный, если заявление не работает - PullRequest
0 голосов
/ 29 сентября 2011

По какой-то причине, когда я добавляю троичный оператор if в этот бит кода, генерируется исключение NullPointerException. Я не совсем уверен, почему ... есть идеи? Это метод для jqGrid - возвращение данных Json.

var gridModel = from entity in vendorList.AsQueryable()
            select new
            {
                VendorId = "<a href='/Admin/DetailsPlan/" + entity.VendorId + "'><img src='/Images/next_icon_sm.png' class='icon' alt='View Vendor' /></a>",
                VendorNm = entity.VendorNm,
                Phone = (entity.Phone.Length < 5) ? String.Format("{0:(###) ###-####}", Convert.ToInt64(entity.Phone)) : entity.Phone,
                City = entity.City,
                State = entity.LkState.StateAbbr
            };

Разве у вас не может быть троичного оператора if в этом месте?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011
var gridModel = from entity in vendorList.AsQueryable()
    let unformattedPhone = entity.Phone??string.Empty
    select new
    {
        VendorId = "<a href='/Admin/DetailsPlan/" + entity.VendorId + "'><img src='/Images/next_icon_sm.png' class='icon' alt='View Vendor' /></a>",
        VendorNm = entity.VendorNm,
        Phone = (unformattedPhone.Length < 5) ? String.Format("{0:(###) ###-####}", Convert.ToInt64(unformattedPhone)) : unformattedPhone,
        City = entity.City,
        State = entity.LkState.StateAbbr
    };

Это может решить вашу проблему.

1 голос
/ 29 сентября 2011

Один вопрос, есть ли entity.Phone? Если так, то это будет причиной.

Примечание: я должен сказать, что это странный способ сохранить номер телефона.

UPDATE

Проблема с частью "entity.Phone.Length". Если Phone имеет значение null, вы не можете получить доступ к его свойству length ... отсюда и ошибка. Так что вам нужно добавить нулевой тест. Что-то вроде:

Phone = ((entity.Phone != null) && (entity.Phone.Length < 5)) ? String.Format("{0:(###) ###-####}", Convert.ToInt64(entity.Phone)) : entity.Phone

Таким образом, если оно равно нулю, вы просто излучаете нулевое значение.

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