linq to sql检查为null

时间:2011-03-07 19:36:05

标签: linq-to-sql

我的数据库字段int_ParentId由Null值组成。我将如何检查此linq查询中的null。它无法正常工作

  return _db.Categories.Where(m => m.int_ParentId==null);

4 个答案:

答案 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 - MSDNNull 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();

希望它有所帮助。