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<T> 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#)

Nullable<T>

Concepts

Expressions de requête LINQ (Guide de programmation C#)