先看部門表設計和資料:
注意:pid為父部門的id號,如果是頂級部門則沒有pid(pid為null)
如果要查詢為null的pid,我們知道sql語句應該是:
select * from depart where pid is null
很多人用linq寫成:
code:
int?pid=null;
listdepartlist=context.depart.where(c=>c.pid==pid).tolist();
但是,結果departlist.count確為0.!怎麼回事呢?檢視linq生成的sql語句才發現是=null判斷,而不是is null判斷。
code:
companydatacontextcontext=newcompanydatacontext();
int?parentdepartid=null;
iqueryablequery=null;
//獲取頂級部門的子部門數量
query=fromdepartincontext.depart
wheredepart.pid==parentdepartid
selectdepart;
/*select[t0].[id],[t0].[name],[t0].[pid]
from[dbo].[depart]as[t0]
where[t0].[pid]=@p0*/
listdepartlist=query.tolist();
console.writeline("count=",departlist.count);//count=0
query=fromdepartincontext.depart
wherenullable.equals(depart.pid,parentdepartid)
selectdepart;
/*select[t0].[id],[t0].[name],[t0].[pid]
from[dbo].[depart]as[t0]
where[t0].[pid]isnull*/
departlist=query.tolist();
console.writeline("count=",departlist.count);//count=2
parentdepartid=1;
//獲取1號部門的子部門數量
query=fromdepartincontext.depart
wheredepart.pid==parentdepartid
selectdepart;
/*select[t0].[id],[t0].[name],[t0].[pid]
from[dbo].[depart]as[t0]
where[t0].[pid]=@p0*/
departlist=query.tolist();
console.writeline("count=",departlist.count);//count=0
query=fromdepartincontext.depart
wherenullable.equals(depart.pid,parentdepartid)
selectdepart;
/*select[t0].[id],[t0].[name],[t0].[pid]
from[dbo].[depart]as[t0]
where([t0].[pid]isnotnull)and([t0].[pid]=@p0)*/
departlist=query.tolist();
console.writeline("count=",departlist.count);//count=2
為了演示,我採用了query查詢,因為這樣才能看到sql語句,現在我們看,如果要查詢為null的結果,應該採用nullable.equals()判斷。注意第二個query,where nullable.equals(depart.pid, parentdepartid)這樣才能生成is null的sql,當parentdepartid不為null時,生成sql:where ([t0].[pid] is not null) and ([t0].[pid] = @p0)。
所以:當資料庫字段可以為空時,應採用nullable.equals()判斷,而不應該用==或equals。
getActionBar為null的解決辦法
在使用 actionbar的時候,有時候會爆出空指標異常,這是因為應用沒有獲取到 actionbar 導致的,而導致應用沒有獲取到 actionbar 的原因比較多,所以我們下面就來總結一下 actionbar 獲取不到的錯誤原因。檢查你的應用是否設定了沒有 actionbar 的主題theme,或...
json decode結果為null的解決方法
傳引數時,有時需要傳陣列,但是陣列不方便傳輸,所以通常會轉化為json串傳輸。接收到引數需要用json decode處理。mixed json decode string js on bool assoc false int de pth 512 i ntoptions 0 json var dum...
判斷JavaScript物件為null或者屬性為空
首先說下null與undefined區別 對已宣告但未初始化的和未宣告的變數執行typeof,都返回 undefined null表示乙個空物件指標,typeof操作會返回 object 一般不顯式的把變數的值設定為undefined,但null相反,對於將要儲存物件的變數,應明確的讓該變數儲存nu...