2009-12-03 2 views
0

je suis en train de faire une requête ainsi:DBNull dans la requête Linq causant des problèmes

int numberInInterval = (from dsStatistics.J2RespondentRow item in jStats.J2Respondent 
        where item.EndTime > dtIntervalLower && item.EndTime <= dtIntervalUpper 
        select item).count(); 

il semble y avoir quelques dbnulls dans la colonne endtime .. quelque façon que je peux éviter ces?

essayé d'ajouter & & où item.endtime! = Null .. et même! = DBNull.Value

dois-je faire une seconde (première) requête pour saisir tout ce qui ne coûtent pas nulle puis exécutez celui ci-dessus ?

Je suis sûr que sa solution super simple, mais im manque encore .. comme par

grâce nat

+0

Quelle est la source de ces données? –

Répondre

0

La façon dont je fais habituellement ceci dans une requête T-SQL est d'utiliser ISNULL à la date et définissez la date sur "12/31/2099" lorsqu'elle est nulle.

Avec LINQ, il pourrait être quelque chose comme ceci:

de t MyTable où Convert.ToString ((Convert.ToString (t.MyDateColumn) ?? "31/12/2099")) < MyTargetValue

1

Je pense que vous voulez utiliser item.EndTime.HasValue, et non item.EndTime == null.

1

La façon la plus simple de le faire est d'utiliser .GetValueOrDefault (... Quelques valeurs par défaut raisonnables ...) sur la valeur qui peut être nulle et cela évitera l'erreur.

Questions connexes