Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
Referencia
Tipos que aceptan valores NULL (Guía de programación de C#)