Udostępnij za pośrednictwem


Jak: obsługiwać wartości Null w wyrażeniach kwerend (Podręcznik programowania 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<T> 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 Nullable (Podręcznik programowania C#)

Nullable<T>

Koncepcje

Wyrażenia w kwerendzie LINQ (Podręcznik programowania C#)