Postupy: Zpracování hodnot Null ve výrazech dotazů (Průvodce programováním v C#)
Tento příklad ukazuje, jak zpracovat možných hodnot null ve zdrojové kolekce.Kolekce objektu, například IEnumerable mohou obsahovat prvky, jejichž hodnota je null.Jestliže zdrojové kolekce je null nebo obsahuje prvek, jehož hodnota je null a dotazu zpracovává hodnoty null NullReferenceException bude vyvolána, při spuštění dotazu.
Příklad
Můžete zabránit null referenční výjimku, jak je znázorněno v následujícím příkladu kódu defenzivně:
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 };
V předchozím příkladu where klauzule odfiltruje všechny prázdné prvky v pořadí kategorií.Tato technika je nezávislá kontrola null klauzule join.Podmíněný výraz s hodnotou null v tomto příkladu funguje, protože Products.CategoryID je typu int? je zkrácený zápis pro Nullable<int>.
Klauzule join Jestliže pouze jeden z klíčů porovnání je typ s možnou hodnotou Null hodnoty, můžete obsadit druhé s možnou hodnotou Null typu ve výrazu dotazu.V následujícím příkladu předpokládejme, že EmployeeID je sloupec obsahující hodnoty 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 };
}
Viz také
Referenční dokumentace
Typy s povolenou hodnotou Null (Průvodce programováním v C#)