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)