2013-09-25 65 views
1

我有這個linq查詢使用下拉選擇列表進行過濾。 但是,我想選擇城市爲空的表中的所有字段。這個標準給出了空的結果集。 這是錯誤的,因爲有超過100個沒有城市的條目。使用linq選擇空條目

我的模型具有這樣的:

public class classA 
{ 
    public string city {get; set;} 
    public ClassB somethingfromClassB{get; set;}  
} 

public class classB 
{ 
    //get set methods here 
} 

控制器A類看起來是這樣的:

public class classA : controller 
{ 
    public actionresult index() 
    { 
     //everything here works except this linq gives me an empty result sets: 

     var a = db.classA.inlcude(t=>t.somethingfromClassB); 
     if(value =="") 
     { 
      a=db.classA.where(u=>u.city==null).inlcude(t=>t.somethingfromClassB); 
     } 
     return view(a.tolist()) 
    } 
} 
+1

數據庫中** city **的類型是什麼?它是nvarchar? – Alireza

+1

你確定''數據庫'中的'city'字段是'null',但是'empty'嗎?我懷疑你可能**不經意**將城市字段保存爲空' –

+0

城市是nvarchar,用戶可以在提交表單時將其留空。 – NULL

回答

0

執行以下操作轉變工作:

a=db.classA.where(u=>u.city == null || u.city == "").inlcude(t=>t.somethingfromClassB); 
+0

不是一個很好的處女作。 –

+0

@HamletHakobyan我錯過了他使用EntityFramework。使用String.IsNullOrEmpty編輯我的答案以測試null和空字符串。這不是問題,但它仍然會在這種情況下發現最明顯的錯誤。 – doorstuck

0

如果你認爲一個Empty字符串作爲NULL,首先應該改變你的想法!其次,你可以這樣查看這兩種情況:

a= db.classA 
    .where(u=>String.IsNullOrEmpty(u.city)) 
    .inlcude(t=>t.somethingfromClassB); 
+0

您已複製@doorstuck錯誤的答案。 –

+1

@HamletHakobyan這個Linq查詢是每個開發者甚至初學者都知道如何編寫的東西。我們很多人都知道如何檢查字符串是否爲null和empty.This是某種方式最好的和單一的方式。但是,您是否看到我發佈的評論以及OP給我的答案?這是解決問題的方法。我遵循簡單的規則來找出問題所在。我們不是在這裏炫耀自己 – Alireza

+0

'Linq'只是查詢語言不是技術。你知道OP使用什麼技術嗎? –