如果返回Null,Linq查询崩溃

时间:2014-07-03 09:12:32

标签: c# winforms linq

我运行此查询如果Query返回空值,则程序崩溃。

var cust = db.Customers.FirstOrDefault(x => x.telephone == txtTel.Text);
if (cust.BlackList == 1)
{
    MessageBox.Show("This customer is blacklisted, Do you wish to continue with this job?"); 
}

请建议我一些有效的解决方案 感谢。

3 个答案:

答案 0 :(得分:2)

你得到一个空指针,因为如果找不到结果,FirstOrDefault返回对象的默认值(在这种情况下它是null):

var cust = db.Customers.FirstOrDefault(x => x.telephone == txtTel.Text);
if (cust != null && cust.BlackList == 1)
{
   MessageBox.Show("This customer is blacklisted, Do you wish to continue with this job?");   
}

答案 1 :(得分:1)

您需要检查null,因为如果没有符合您条件的记录,那么FirstOrDefault会返回:

if(cust != null && cust.BlackList == 1)

答案 2 :(得分:1)

如果列表中没有满足条件的元素,则FirstOrDefault将返回默认值,在这种情况下,它将为null。当您在null值上调用属性时,它自然会导致异常。

您应该检查cust是否为null,例如:

if(cust != null && cust.BlackList == 1)

当然,如果用户根据您的应用程序的逻辑不存在,您可以显示另一条消息。