2014-01-12 59 views
0

如何檢查此查詢是否有任何項目。如何在引發異常之前檢查空引用?

Dim fls = (From fl In FSCHART.fltbars 
        Where fl.FLT_Value.FLIGHT_ID = local.LEG_Value.FLIGHT_ID 
        Select fl).First 
像另一種情況

Dim fls = From fl In FSCHART.fltbars 
        Where fl.FLT_Value.FLIGHT_ID = local.LEG_Value.FLIGHT_ID 
        Select fl 



for each row in fls 
    textbox1.text=row.name 
next 

如何找出行是否爲空時出現異常錯誤之前?

回答

0

對於第一個版本,使用FirstOrDefault(),不First()

然後

If fls IsNot Nothing 

對於第二個版本,使用Any()

If fls.Any() 

但每個在一個空可枚舉不會引發一個空引用異常......

現在,爲了避免NRE在查詢,使用

Where fl.FLT_Valuefls IsNot Nothing AndAlso fl.FLT_Value.FLIGHT_ID = local.xxx 

編輯:

首先檢查應該是

If FSCHART.fltbars.Any() 
+0

謝謝你快速回答。但首先或默認仍然說序列沒有元素.NRF – Farhad

+0

@ Farhad看到編輯也許。 –

+0

非常感謝,我認爲這種方式它的工作原理。 – Farhad

0

... where(something)!= null。例如。

Where fl != null && 
    fl.FLT_Value != null && 
    fl.FLT_Value.FLIGHT_ID = local.LEG_Value.FLIGHT_ID