我的数据库字段int_ParentId由Null值组成。我将如何检查此linq查询中的null。它无法正常工作
return _db.Categories.Where(m => m.int_ParentId==null);
答案 0 :(得分:26)
您是否已将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);
应该有用。
答案 1 :(得分:5)
由于您提供的背景不足,这个问题实际上并不容易回答,但通常_db.Categories.Where(m => m.int_ParentId.Equals(null));
可以满足您的需求。
CTS(.NETs类型系统)和SQL类型系统之间存在一些差异。
请参阅SQL-CLR Type Mismatches - MSDN和Null Semantics - MSDN以获取完整参考。
如果你没有采取足够的谨慎,特别是null会让你头疼,因为它在各自的类型系统中有两个完全不同的含义。 SQL中的NULL
表示“缺少值,将匹配任何比较”,而.NET中的null
表示“没有对象,与null比较将始终产生错误”。
答案 2 :(得分:2)
我认为你想使用对象的Equals
方法:
return _db.Categories.Where(m => m.int_ParentId.Equals(null));
答案 3 :(得分:0)
我在此场景中使用此查询
YourContext db = new YourContext();
List<entity> list = (from n in db.YourEntity
where n.FieldToCheck.Equals(null)
select n).ToList();
希望它有所帮助。