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