如果返回Null, Linq查询崩溃

本文关键字:查询 崩溃 Linq 返回 Null 如果 | 更新日期: 2023-09-27 18:11:12

我运行这个查询,如果查询返回空值,程序崩溃。

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?"); 
}

请建议我一些有效的解决办法谢谢。

如果返回Null, Linq查询崩溃

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

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?");   
}

您需要检查null,因为如果没有满足您的条件的记录,FirstOrDefault将返回:

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

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

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

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

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