Maison > développement back-end > C++ > Comment gérer les valeurs nulles dans LINQ Sum() pour éviter l'erreur « Échec de la conversion en valeur 'Int32' » ?

Comment gérer les valeurs nulles dans LINQ Sum() pour éviter l'erreur « Échec de la conversion en valeur 'Int32' » ?

Patricia Arquette
Libérer: 2025-01-10 20:52:41
original
355 Les gens l'ont consulté

How to Handle Null Values in LINQ Sum() to Avoid

Gestion des valeurs nulles dans les requêtes LINQ : résolution de l'erreur « Impossible de convertir en type de valeur 'Int32' »

Ce code utilise une requête LINQ pour récupérer le montant total de l'historique de crédit pour un ID utilisateur spécifique. Lorsqu'il n'y a aucun enregistrement dans la table CreditHistory, vous rencontrerez des erreurs dues au renvoi de valeurs nulles.

Réécrire la requête pour gérer les valeurs nulles

L'erreur se produit car la méthode Sum() attend une valeur non nulle, mais la requête peut renvoyer une valeur nulle. Pour résoudre ce problème, vous pouvez modifier la requête pour accepter les types nullables à l'aide de l'opérateur ?? ou de la méthode DefaultIfEmpty().

Utilisez l'opérateur ??

L'opérateur

?? peut être utilisé pour gérer les valeurs nulles en spécifiant une valeur par défaut :

<code class="language-csharp">var creditsSum = (from u in context.User
                  join ch in context.CreditHistory on u.ID equals ch.UserID
                  where u.ID == userID
                  select (int?)ch.Amount).Sum() ?? 0;</code>
Copier après la connexion

Ce code convertit d'abord la propriété Amount en un entier pour indiquer qu'elle peut être nulle. La somme est ensuite calculée à l'aide de la méthode Sum(), qui renvoie un int ?. Utilisez ensuite l'opérateur ?? pour attribuer une valeur par défaut de 0 si le résultat est vide.

Utilisez la méthode DefaultIfEmpty()

Vous pouvez également utiliser la méthode DefaultIfEmpty() pour gérer les valeurs vides :

<code class="language-csharp">var creditsSum = (from u in context.User
                  join ch in context.CreditHistory on u.ID equals ch.UserID
                  where u.ID == userID
                  select ch.Amount).DefaultIfEmpty(0).Sum();</code>
Copier après la connexion

Cette méthode ajoute une valeur par défaut (0) à la séquence avant d'effectuer l'opération Sum(). Si la séquence ne contient aucun élément, la valeur par défaut sera utilisée pour les calculs de somme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal