Sdílet prostřednictvím


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#)

Nullable

Koncepty

LINQ – výrazy dotazů (Průvodce programováním v C#)