2014-01-12 107 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