Sdílet prostřednictvím


Jak: zpracování hodnot Null ve výrazech dotazu (Příručka programování C#)

Tento příklad ukazuje, jak zpracovat možných hodnot null ve zdrojové kolekce.Kolekce objektu, například IEnumerable<T> 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 možnou hodnotou Null (Příručka programování C#)

Nullable<T>

Koncepty

LINQ dotazu výrazy (Příručka programování C#)