Poniższy kod działa, chyba że p.School.SchoolName okazuje się mieć wartość null, w takim przypadku powoduje to wyjątek NullReferenceException.linq gdzie klauzula i count powodują zerowy wyjątek
if (ExistingUsers.Where(p => p.StudentID == item.StaffID &&
p.School.SchoolName == item.SchoolID).Count() > 0)
{
// Do stuff.
}
ExistingUsers jest lista użytkowników:
public List<User> ExistingUsers;
Oto odnośny fragment stacktrace:
System.NullReferenceException: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu .
na System.Linq.Enumerable.WhereListIterator
1.MoveNext()
1 źródło)
at System.Linq.Enumerable.Count[TSource](IEnumerable
Jak należy sobie radzić w tej klauzuli WHERE?
Dziękuję bardzo z góry.
Czy jesteś pewien, że nazwa szkoły ma wartość zerową, a nie p.School? –
Jako ogólna uwaga, zamiast robić IEnumerable.Count (predicate)> 0, użyj IEnumerable.Any (predicate). Spowoduje to zakończenie wykonywania pierwszego znalezionego dopasowania, co może doprowadzić do znacznego przyspieszenia. – recursive
@Anthonia: wielkie dzięki, myślę, że masz rację, ponieważ p.School jest zerowy. – IntrepidDude