El código siguiente funciona a menos que p.School.SchoolName resulte nulo, en cuyo caso da como resultado una NullReferenceException.linq where cláusula y recuento dan como resultado excepción nula
if (ExistingUsers.Where(p => p.StudentID == item.StaffID &&
p.School.SchoolName == item.SchoolID).Count() > 0)
{
// Do stuff.
}
ExistingUsers es una lista de los usuarios:
public List<User> ExistingUsers;
Aquí está la parte correspondiente de la StackTrace:
System.NullReferenceException: referencia a objeto no establecida como instancia de un objeto .
en System.Linq.Enumerable.WhereListIterator
1.MoveNext()
1 fuente)
at System.Linq.Enumerable.Count[TSource](IEnumerable
¿Cómo debo manejar esta cláusula where?
Muchas gracias de antemano.
¿Estás seguro de que es SchoolName nulo y no p.School? –
Como nota general, en lugar de hacer IEnumerable.Count (predicate)> 0, use IEnumerable.Any (predicate). Esto terminará la ejecución de la primera coincidencia que se encuentre, lo que podría generar una gran aceleración. – recursive
@Anthony: muchas gracias, creo que tienes razón acerca de que es p.School que es nulo. – IntrepidDude