我的数据库字段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