Share via


Comment : gérer des valeurs Null dans des expressions de requête (Guide de programmation C#)

Mise à jour : novembre 2007

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 nulle 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 acceptant la valeur null 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

Tâches

LINQ to Northwind, exemple

Concepts

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

Référence

Types nullables (Guide de programmation C#)

Nullable<T>