开发者

linq to sql checking for null

my database field int_ParentId consist of a Null value . how would i check it for a null in this linq query . it is no开发者_运维知识库t working

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


Have you mapped you int_ParentId database field to int? type (e.g. <Column Name="int_ParentId" Type="System.Int32" DbType="Int" CanBeNull="true" />)? If yes, both:

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

and

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

should work.


This question is actually not easily answered given the lack of context you provide, though usually _db.Categories.Where(m => m.int_ParentId.Equals(null)); does what you want.

There are a couple of discrepancies between the CTS (.NETs type system) and the SQL type system.

See SQL-CLR Type Mismatches - MSDN and Null Semantics - MSDN for the full reference.

Especially null will cause you headaches if you don't take enough care, since it has two completely different meanings in the respective typesystems. NULL in SQL means, "value absent, will match any comparison", whereas null in .NET means "no object, comparing against null will always yield false".


I think you want to use the object's Equals method:

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


I have this query working in this scenario

YourContext db = new YourContext();
List<entity> list =  (from n in db.YourEntity
                     where n.FieldToCheck.Equals(null)
                     select n).ToList();

Hope it helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜