Como: Lidar com valores nulo em expressões de consulta (guia de programação translation from VPE for Csharp)

Este exemplo mostra como tratar os possíveis valores nulo em coleções de fonte.Uma coleção de objetos, sistema autônomo um IEnumerable<T> podem conter elementos cujo valor é nulo.Se uma coleção de fonte é nula ou contiver um elemento cujo valor é nulo e sua consulta não processa valores nulos, um NullReferenceException será gerada quando você executa a consulta.

Exemplo

Você pode codificar defensively para evitar um nulo exceção de referência, conforme mostrado no exemplo a seguir:

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 };

No exemplo anterior, a where cláusula filtra todos os elementos nulo na sequência de categorias. Essa técnica é independente da verificação de nula na cláusula de unir.A expressão condicional com nulo neste exemplo funciona porque Products.CategoryID é do tipo int? qual é a forma abreviada de Nullable<int>.

Em uma cláusula de unir, se houver apenas uma das teclas de comparação de um tipo de valor nulo, você pode usar o Outros para um tipo que permite valor nulo na expressão de consulta.O exemplo a seguir, suponha que EmployeeID é uma coluna que contém valores de tipo 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 };
}

Consulte também

Tarefas

LINQ to Northwind de exemplo

Conceitos

Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)

Referência

Tipos anuláveis (guia de programação C#)

Nullable<T>