Compartilhar via


Como: manipular valores nulos em expressões de consulta (guia de programação do C#)

Este exemplo mostra como lidar com 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 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 do C#)

Nullable<T>

Conceitos

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