我的数据库字段int_ParentId包含一个Null值。我该如何在这个Linq查询中检查它是否为空?它目前无法工作。
return _db.Categories.Where(m => m.int_ParentId==null);
我的数据库字段int_ParentId包含一个Null值。我该如何在这个Linq查询中检查它是否为空?它目前无法工作。
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);
应该可以工作。
鉴于您提供的上下文不足,实际上很难回答这个问题,但通常_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进行比较将始终产生false”。
我认为你想使用对象的Equals
方法:
return _db.Categories.Where(m => m.int_ParentId.Equals(null));
我在这种情况下已经使这个查询工作了
YourContext db = new YourContext();
List<entity> list = (from n in db.YourEntity
where n.FieldToCheck.Equals(null)
select n).ToList();
希望能有所帮助。