LINQ .SUM() et nullable db valeurs
Je sais pourquoi ce qui se passe, mais quelqu'un peut-il me diriger dans la bonne direction de la syntaxe?
Actuellement, j'ai:
var expense = from e in db.I_ITEM
where e.ExpenseId == expenseId
select e;
return expense.Sum(x => x.Mileage ?? 0);
Mon problème, c'est que x.Le kilométrage est de type "double?" et a des valeurs null dans la base de données.
L'erreur que j'obtiens est:
Exception Details: System.InvalidOperationException: The cast to value type 'Double' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
Quelle serait la syntaxe correcte?
OriginalL'auteur Chris | 2011-03-01
Vous devez vous connecter pour publier un commentaire.
Je suis surpris que échoue, mais une alternative qui pourrait travail est tout simplement de faire la somme des valeurs null valeurs et puis utiliser le nul de la coalescence de l'opérateur:
Certainement dans LINQ to Objects cela permettrait de faire la bonne chose, en ignorant les valeurs null et en vous donnant un résultat nul (avant le nul de la coalescence de l'opérateur) si il n'y avait pas les valeurs non null dans la séquence.
Il ressemble à ça, oui. C'est difficile à dire sans plus de détails.
OriginalL'auteur
Qu'en excluant les valeurs null, c'est à dire
OriginalL'auteur
peut vous donner une opinion...
if (query.Count() > 0)
nécessaire?OriginalL'auteur
Qui O/R mappeur utilisez-vous, et qui DB utilisez-vous? (Linq to SQL/Entity Framework/SQL Server)?
Car l'expression est exécutée dans la base de données comme une instruction SQL, je pense que ça pourrait fonctionner sans la coalescence de l'opérateur:
var charge = à partir de e en db.I_ITEM
où e.ExpenseId == expenseId
sélectionnez e;
frais de retour.Sum(x => x.Kilométrage);
OriginalL'auteur
OriginalL'auteur