Compartilhar via


How to: Manipular valores nulos em expressões de consulta (guia de programação de C#)

Este exemplo mostra como tratar os possíveis valores nulos em coleções de origem. Uma coleção de objetos, como um IEnumerable<T> podem conter elementos cujo valor é Nulo. Se uma coleção de origem é nula ou contém um elemento cujo valor é nulo e a sua consulta não tratar valores nulos, uma NullReferenceException será lançada ao executar a consulta.

Exemplo

Código defensivo 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 a todos os elementos nulos na seqüência de categorias. Essa técnica é independente da verificação null 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

Nullable Types (C# Programming Guide)

Nullable<T>

Conceitos

LINQ Expressões de consulta (guia de programação de C#)