Cómo: Controlar valores Null en expresiones de consultas (Guía de programación de C#)
Actualización: noviembre 2007
Este ejemplo muestra cómo tratar los posibles valores nulos (null) en colecciones de origen. Una colección de objetos tal como un IEnumerable<T> puede contener elementos cuyo valor es null. Si una colección de origen es nula o contiene algún elemento cuyo valor es nulo, y la consulta no controla los valores nulos, se iniciará una excepción NullReferenceException al ejecutar la consulta.
Ejemplo
Puede escribir el código adecuado para evitar una excepción de referencia nula como se muestra en el siguiente ejemplo:
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 };
En el ejemplo anterior, la cláusula where deja fuera del filtro todos los elementos nulos de la secuencia de categorías. Esta técnica es independiente de la comprobación de valores nulos de la cláusula join. La expresión condicional con null de este ejemplo funciona porque Products.CategoryID es de tipo int?, que es una forma abreviada de Nullable<int>.
En una cláusula join, si sólo una de las claves de comparación es de un tipo de valor que acepta valores null, puede convertir el otro a un tipo que acepte valores null en la expresión de consulta. En el ejemplo siguiente, suponga que EmployeeID es una columna que contiene 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 };
}
Vea también
Tareas
Conceptos
Expresiones de consultas con LINQ (Guía de programación de C#)