2011-09-28 158 views
0

由於某些原因,當我將三進制if語句添加到此位代碼時,會引發NullPointerException。我不太清楚爲什麼...有什麼想法?這是jqGrid的方法 - 返回Json數據。內聯if語句不起作用

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

如果在該位置聲明,你可以沒有三元?

+0

什麼是「一元」if語句? –

+1

@Peter:一個例子是* i ++; * OP顯然沒有問題。我認爲我們的好醫生一直在尋找的是Ternary。 http://en.wikipedia.org/wiki/Ternary_operation糾正。 – NotMe

+1

'? :'被稱爲*條件運算符。*(它實際上是三元的,不是一元的)。http://msdn.microsoft.com/en-us/library/ty67wk28.aspx –

回答

1

有一個問題,是entity.Phone null?如果是這樣,那將是原因。

附註:我不得不說,這是儲存電話號碼的一種奇怪的方式..

UPDATE

的問題是與「entity.Phone.Length」的一部分。如果電話爲空,那麼你不能訪問它的長度屬性...因此錯誤。所以你需要添加一個空測試。喜歡的東西:

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

這樣一來,如果是空你只是發射空值。

+0

在某些情況下,它爲空。然而,如果我有任何String.Format(實體....)或者如果我只是顯示手機...沒有錯誤..但兩者的組合使它不出現。 – Cody

+0

Ahhhhhhhhhh ....這是有道理的。 DERP。讓我改變這個... – Cody

+0

完美。就是這樣,謝謝。 – Cody

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

這可能會解決您的問題。

+0

分號是錯字嗎? – Cody

+0

是oops:P我做了更正 –

+0

它最終成爲'entity.phone.Length <5' - 在某些情況下,entity.phone爲空。然而,你的解決方案看起來很有趣 - 行'let unformattedPhone = entity.Phone ?? string.empty' double?手段? – Cody