我的數據庫字段int_ParentId包含一個空值。我將如何檢查這個linq查詢中的空值。它不工作linq到sql檢查null
return _db.Categories.Where(m => m.int_ParentId==null);
我的數據庫字段int_ParentId包含一個空值。我將如何檢查這個linq查詢中的空值。它不工作linq到sql檢查null
return _db.Categories.Where(m => m.int_ParentId==null);
已映射你int_ParentId
數據庫字段int?
類型(如<Column Name="int_ParentId" Type="System.Int32" DbType="Int" CanBeNull="true" />
)?如果是的話,既:
return _db.Categories.Where(m => m.int_ParentId == null);
和
return _db.Categories.Where(m => m.int_ParentId.HasValue);
應該工作。
我想你想使用對象的Equals
方法:
return _db.Categories.Where(m => m.int_ParentId.Equals(null));
這個問題實際上不容易回答,因爲你沒有提供上下文,雖然通常_db.Categories.Where(m => m.int_ParentId.Equals(null));
做你想做的。
CTS(.NET類型系統)和SQL類型系統之間有一些差異。
請參閱SQL-CLR Type Mismatches - MSDN和Null Semantics - MSDN以供參考。
如果你沒有足夠小心,特別是null會讓你頭痛,因爲它在各自的類型系統中有兩個完全不同的含義。 SQL中的NULL
表示「值不存在,將匹配任何比較」,而.NET中的null
表示「沒有對象,與null比較總是會產生錯誤」。
我有這個疑問在這種情況下
YourContext db = new YourContext();
List<entity> list = (from n in db.YourEntity
where n.FieldToCheck.Equals(null)
select n).ToList();
希望它可以幫助工作。
完美 - 正是我一直在尋找 – 2014-03-28 05:28:57