2010-12-09 17 views
0

Je suis en train de convertir la ligne suivante de SQL au code LINQ:types IsNull et nullables dans LINQ

AND IsNull(Deleted,0) = 0 

J'ai essayé en faisant ceci:

&& Deleted != null ? Deleted : false 

Et ceci:

&& (bool)Deleted != null ? (bool)Deleted : false 

La première tentative m'a donné une erreur car Deleted est un type Nullable, et la deuxième tentative ne retourne pas le même jeu de données que t Le SQL d'origine. Quelqu'un peut-il me dire ce que je fais mal?

Répondre

1

Vous pouvez utiliser

& & Deleted.GetValueOrDefault (false) == false

+1

Si par défaut est de type bool ?, alors il devrait être '&& Deleted.GetValueOrDefault (false) == false' ou simplement '&&! Deleted.GetValueOrDefault (false)'. – CGK

+0

Oui - c'est vrai. Mon erreur, je vais mettre à jour –

+0

Merci ... par intérêt, si le type avait été booléen au lieu de bool ?, quelle aurait été la bonne syntaxe? – user517406

1

LINQ;

where !(u.Deleted ?? false)

sortie sql:. ​​

OU (CAS QUAND ([Extent1] [supprimé] IS NULL) ALORS CAST (0 comme bit) AUTRE [Extent1] [. supprimé] FIN) <> casting (1 bit)