Umar Abbas
Umar Abbas

Reputation: 4161

Linq Query Crash if Return Null

I run this query And if The Query is return with empty values the programme is crashed.

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

Please Suggest me Some Efficient solution Thanks.

Upvotes: 0

Views: 1294

Answers (3)

Istvan Reiter
Istvan Reiter

Reputation: 303

FirstOrDefault will return a default value if there is no element in the list which satisfy the condition, in this case it will be null. As you call a property on the null value it will naturally cause an exception.

You should check if cust is null, like:

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

Of course you can display another message if the user doesn't exist based on the logic of your application.

Upvotes: 1

nsgocev
nsgocev

Reputation: 4470

You are getting a null pointer because FirstOrDefault returns the default value of the object if the result is not found (in this case it is 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?");   
}

Upvotes: 2

Selman Genç
Selman Genç

Reputation: 101701

You need to check for null because that's what FirstOrDefault returns if there is no record that satisfies your condition:

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

Upvotes: 1

Related Questions