内联if语句不工作

本文关键字:工作 语句 if 内联 | 更新日期: 2023-09-27 18:10:03

由于某种原因,当我将三元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语句吗?

内联if语句不工作

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
    };

一个问题,是实体。电话空吗?如果是这样,那就是原因。

边注:我不得不说,这是一种奇怪的存储电话号码的方式。

更新

问题在于"entity.Phone"。长度"部分。如果Phone是null,那么你就不能访问它的length属性…因此产生了错误。所以你需要添加一个空测试。比如:

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

这样,如果它是空的,你只是发出一个空值