2016-07-28 46 views
0

我在數據庫中有一列值爲NULL。我正在linq讀取這個值來得到結果,但linq不返回任何結果。 我的LINQ看起來像如果比較可空數據,則Linq不返回任何數據

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

PID是因爲沒有通過,我的DB值由該ID爲NULL,所以這個LINQ應該返回一些結果,但它不返回。爲什麼?

+0

空= NULL沒有返回true,你也許可以這樣做暗淡結果=(從噸如果其中(i.id.isnull,0,i.id)= IF(PID是什麼,0,Pid))或任何測試爲null是再次 – Cato

回答

0

據我所知,不可能用比較運算符來測試NULL值,例如SQL中的=, <, or <>。我們將不得不使用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

這個查詢轉換成SQL具有以下where子句:

WHERE [t1].[Id] = @p1 

這裏的問題是SQL中的空比較語義返回null,這不是真的,並且行被過濾。


你想要的,而是有這樣的where子句:

WHERE [t1].[Id] is null 

,你可以用不同的查詢得到。

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