Compartilhar via


Como manipular valores nulos em expressões de consulta (Guia de Programação em C#)

Este exemplo mostra como lidar com possíveis valores nulos em coleções de origem. Uma coleção de objetos, como um IEnumerable podem conter elementos cujo valor é Nulo. Se uma coleção de origem é nula ou contém um elemento cujo valor é nulo e sua consulta não lidar com valores nulos, um NullReferenceException será gerada quando você executa a consulta.

Exemplo

Você pode codificar na defensiva para evitar uma exceção de referência nula, 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, o where cláusula filtra todos os elementos nulos na seqüência de categorias. Essa técnica é independente do cheque nulo na cláusula join. A expressão condicional com null neste exemplo funciona porque Products.CategoryID é do tipo int? que é a abreviação de Nullable<int>.

Em uma cláusula de associação, se apenas uma das teclas de comparação é um tipo de valor nulo, você pode converter o outro para um tipo anulável na expressão de consulta. O exemplo a seguir, suponha que EmployeeID é uma coluna que contém os valores do 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

Referência

Tipos anuláveis (Guia de Programação em C#)

Nullable

Conceitos

Expressões de consulta LINQ (Guia de Programação em C#)