2016-07-28 5 views
0

値がNULLのデータベースにNULLがあります。私は結果を得るためにlinqでこの値を読んでいますが、linqは結果を返しません。 私のLINQはnull可能なデータが比較される場合、Linqは何も返しません。

dim result= (from t in <tableName> where i.id=Pid) 

のように見えるPIDが何もないと私のDBはNULLとしてこのid値から成るように、このLINQは、いくつかの結果を返す必要がありますが、それは戻りません渡されます。どうして ?

+0

ヌル= nullはtrueを返していない、あなたはおそらく=(トンからでどこ(i.id.isnull、0、i.id)の場合=(pidは何もないかの薄暗い結果のような何かを行うことができます、0、Pid))ま​​たはnullのテストが何であれ再度 – Cato

答えて

0

私の知る限り、NULLを比較演算子(たとえば、=, <, or <>、SQL)でテストすることはできません。代わりにIS NULL and IS NOT NULL演算子を使用する必要があります。

あなたは次のようにホスト言語で if statementにあなたがやりたいことができ

if(pid!=null) 
{ 
    dim result= (from t in <tableName> where i.id=Pid) 
} 
else 
{ 
    dim result= (from t in <tableName> where i.id IS NULL) 
} 
+0

しかし、必ずしも 'Pid'がNULLの値を持っているとは限りません。123を持つと結果が完全に来ることができます。 PidがNULLのときに何をチェックする必要がありますか? – Akhire

0

WHERE句このクエリは次のようにSQLに翻訳されています

WHERE [t1].[Id] = @p1 

問題ここにはありますそのSQLのnull比較セマンティクスは、真ではないnullを返し、その行はフィルタリングされます。

WHERE [t1].[Id] is null 

あなたが別のクエリで取得することができます:あなたが欲しい


は、代わりに、このwhere句を持っています。

dim result= (from t in <tableName> where i.id Is Nothing) 
関連する問題