Porady: obsługa wartości zerowych w wyrażeniach kwerend (Przewodnik programowania w języku C#)
W tym przykładzie przedstawiono sposób obsługiwać możliwe wartości null w kolekcjach źródła.Kolekcja obiektów takich jak IEnumerable może zawierać elementy, których wartość jest null.Jeśli kolekcji źródłowej jest zerowy lub zawiera element, którego wartością jest null, a kwerenda nie obsługuje wartości null, NullReferenceException będą generowane podczas wykonywania kwerendy.
Przykład
Można obronie kodu do uniknięcia wyjątek odwołania zerowego, jak pokazano w następującym przykładzie:
var query1 =
from c in categories
where c != null
join p in products on c.ID equals
(p == null ? null : p.CategoryID)
select new { Category = c.Name, Name = p.Name };
W poprzednim przykładzie where klauzuli odfiltrowuje wszystkie elementy null w kolejności kategorii.Technika ta jest niezależna od null wyboru w klauzuli join.Wyrażenie warunkowe z wartością null w tym przykładzie działa, ponieważ Products.CategoryID jest typu int? które jest skróconą formą Nullable<int>.
W klauzuli join jeśli tylko jeden z klawiszy porównanie jest typem wartości NULL można rzutować inne typu null w wyrażeniu kwerendy.W poniższym przykładzie założono, że EmployeeID jest kolumna zawierająca wartości typu int?:
void TestMethod(Northwind db)
{
var query =
from o in db.Orders
join e in db.Employees
on o.EmployeeID equals (int?)e.EmployeeID
select new { o.OrderID, e.FirstName };
}
Zobacz też
Informacje
Typy dopuszczające wartości zerowe (Przewodnik programowania w języku C#)
Koncepcje
Wyrażenia kwerend LINQ (Przewodnik programowania w języku C#)