J'ai une sous-requête qui retourne la valeur la plus récente d'une table enfant. Dans certains cas, la sous-requête ne renvoie rien. La requête ci-dessous échoue à l'exécution car le type inféré de MemberPrice est décimal et n'est pas nullable.Comment gérer Null dans la sous-requête LINQ?
requête simplifiée:
Dim q = From s In dc.STOCKs _
Select s.ID, MemberPrice = _
(From mp In dc.STOCKPRICEs Where mp.NUMBER = s.NUMBER _
Order By dc.date Descending _
Select mp.PRICE).FirstOrDefault
Dans SQL, la sous-requête contiendrait Top (1) et renvoyait nul quand il est vide. Comment puis-je gérer cela dans LINQ? Existe-t-il un moyen de rendre null MemberPrice null ou par défaut la valeur à zéro si elle n'est pas trouvée (ou une solution plus élégante)?
Un grand merci, Stuart
Pouvez-vous définir ce que vous voulez dire par échec? FirstOrDefault doit renvoyer Nothing si la sous-requête est vide et que, par conséquent, MemberPrice doit être 0 dans ce cas. – JaredPar
Je reçois une System.InvalidOperationException {"La valeur null ne peut pas être assignée à un membre avec le type System.Decimal qui est un type de valeur non nullable."}. Je m'attendais aussi à ce qu'il retourne 0 si nul, donc je dois manquer quelque chose. – Stuart
Quel est le type de mp.PRICE? – JaredPar