Comment : gérer des valeurs Null dans des expressions de requête (Guide de programmation C#)
Cet exemple indique comment gérer des valeurs Null éventuelles dans les collections sources. Une collection d'objets telle qu'un IEnumerable peut contenir des éléments dont la valeur est Null. Si une collection source est Null ou contient un élément dont la valeur est Null, et que votre requête ne gère pas les valeurs Null, une NullReferenceException sera levée lorsque vous exécuterez la requête.
Exemple
Vous pouvez coder de manière défensive pour éviter une exception de référence Null comme indiqué dans l'exemple suivant :
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 };
Dans l'exemple précédent, la clause where élimine par filtrage tous les éléments Null dans la séquence de catégories. Cette technique est indépendante du contrôle de valeur Null dans la clause join. Dans cet exemple, l'expression conditionnelle avec Null fonctionne parce que Products.CategoryID est de type int? qui est un raccourci pour Nullable<int>.
Dans une clause de jointure, si seule l'une des clés de comparaison est un type valeur Nullable, vous pouvez caster l'autre en un type Nullable dans l'expression de requête. Dans l'exemple suivant, supposons que EmployeeID soit une colonne qui contient des valeurs de type 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 };
}
Voir aussi
Référence
Types Nullable (Guide de programmation C#)