J'ai une table avec une colonne qui a des valeurs nulelles ... Lorsque j'essaie d'interroger pour les enregistrements où cette colonne est NULL:
Ceci fonctionne: P>
int? id = null; var list = from mt in db.MY_TABLE where mt.PARENT_KEY == id select new { mt.NAME };
3 Réponses :
Une possibilité - si Cela aiderait si vous pouviez montrer les types impliqués et la requête générée dans chaque cas. p> EDIT: Je pense avoir une idée ... P> Cela pourrait être parce que SQL et C # ont des idées différentes de quelle égalité signifie quand il s'agit de null. Essayez ceci: p> si ce est em> le cas alors c'est un étui de coin jolie, mais je peux comprendre pourquoi c'est fait de cette façon ... Si le SQL généré vient d'utiliser P> mt.parent_key code> est d'un autre type (par exemple
long? code>), il y aura des conversions impliquées.
select mt.NAME
J'ai mis à jour la réponse de Nick pour refléter la manière dont les objets.equaux rendent à SQL. À votre avis, est l'extra (mt.parent_key n'est pas null) et (@ID n'est pas null) code> en ligne 2 superflu? Ceci est suggéré par votre réponse. (Plus de caractères de Linq, moins de caractères de SQL)
C'est définitivement une question de C # et SQL ayant des notions différentes de la comparaison des NULLS - la question a été abordée ici avant: p>
Avez-vous essayé de regarder le SQL généré dans chaque cas? Quel est le type de mt.parent_key?
Dans le code généré? Nullable, nullable ?