When I run a linq query I get back the results only when an item can be found; if no items are found, it is throwing an exception "object reference not set to an instance of an object"
How do I not throw this exception? I want only to return a result even if it is empty.
var id = db.table.Where(a => a.item == passed_item).FirstOrDefault().id;
                This method, FirstOrDefault, will return null, if  an object not been found. Hence, if you try to read the value of id, then an exception will be thrown.
One way to avoid this is the following:
// I suppose that the id you want to read is an int.
// If it isn't, please change the code correspondingly. 
int id;
// Try to get the record.
var record = db.table.Where(a => a.item == passed_item)
                     .FirstOrDefault();
// If you find the record you are looking for, then read it's id.
if(record != null) 
{
    id = record.id;
}
Update
Another option it would be to follow that DavidG suggested in his comment:
var record = db.Table.FirstOrDefault(a => a.item == passed_item);
and the next step is the same.
You could use the Null-conditional operator instead:
int? id = db.table.Where(a => a.item == passed_item).FirstOrDefault()?.id;
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With