проверка linq to sql на null
поле моей базы данных int_ParentId состоит из нулевого значения . как проверить его на null в этом запросе linq . это не работает
return _db.Categories.Where(m => m.int_ParentId==null);
4 ответов
вы отображенный вы 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 (.NETs type system) и система типов SQL.
посмотреть несоответствия типа SQL-CLR-MSDN и нулевая семантика-MSDN для полной справки.
особенно null вызовет у вас головные боли, Если вы недостаточно заботитесь, так как у него есть два совершенно разные значения в соответствующих typesystems. NULL
в SQL означает "значение отсутствует, будет соответствовать любому сравнению", тогда как null
в .NET означает "нет объекта, сравнение с 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();
надеюсь, что это помогает.