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
Try the code below (I've assumed that
contactText
is astring
).You may want to look at standardising the capitalisation of your public property names to all start with an upper-case letter.
Try:
the
null
value iscontactType
so we add(ci.contactType != null)
You can check if it's
null
with?:
(conditional) operator:If
First
throws an exception because there's no one withContactType.PHONE
you can useDefaultIfEmpty
with a custom default value:Note that
First
now cannot throw an exception anymore since i've provided a default value.); }