I’m trying to get a property from an array of object that can be null (the array) and I’m always getting a null reference exception.
How can I tell LINQ to not process it in case it’s null or to return an empty string?
foreach (Candidate c in candidates) {
results.Add(new Person
{
firstName = c.firstname, //ok
lastName = c.Name, //ok
// contactItems is an array of ContactItem
// so it can be null that's why I get null exception
// when it's actually null
phone = c.address.contactItems.Where( ci => ci.contactType == ContactType.PHONE).First().contactText
}
);
}
I’ve also tried that to not take null. I don’t get the mechanism to tell LINQ not to process if the array is null.
phone = c.address.contactItems.Where( ci => ci != null && ci.contactType == ContactType.PHONE).First().contactText
You can check if it’s
nullwith?:(conditional) operator:If
Firstthrows an exception because there’s no one withContactType.PHONEyou can useDefaultIfEmptywith a custom default value:Note that
Firstnow cannot throw an exception anymore since i’ve provided a default value.