如何在抛出异常之前检查空引用?

时间:2014-01-12 15:52:02

标签: linq nullreferenceexception

如果有任何项目,如何检查此查询。

   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

如何在发生异常错误之前查明某行是否为空?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

对于第一个版本,请使用FirstOrDefault(),而不是First()

然后

If fls IsNot Nothing

对于第二个版本,请使用Any()

类似

If fls.Any()

但是对于空的Enumerable中的每一个都不会引发Null引用异常......

现在,为了避免查询中的NRE,请使用

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

编辑:

首先检查

If FSCHART.fltbars.Any()