2011-03-07 21 views
7

mi campo de base de datos int_ParentId consiste en un valor nulo. cómo lo verificaría para un nulo en esta consulta de linq. que no está funcionandolinq a sql comprobando nulo

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

Respuesta

25

¿Usted le ha asignado campo int_ParentId base de datos para int? tipo (por ejemplo <Column Name="int_ParentId" Type="System.Int32" DbType="Int" CanBeNull="true" />)? Si es así, tanto:

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

y

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

debería funcionar.

+1

perfecto - exactamente lo que estaba buscando –

1

Creo que desee utilizar el método del objeto Equals:

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

Esta pregunta no se responde fácilmente debido a la falta de contexto que proporciona, aunque generalmente _db.Categories.Where(m => m.int_ParentId.Equals(null)); hace lo que quiere.

Existen un par de discrepancias entre el sistema de tipo CTS (.NETs) y el sistema de tipo SQL.

Ver SQL-CLR Type Mismatches - MSDN y Null Semantics - MSDN para la referencia completa.

Especialmente nulo le causará dolores de cabeza si no tiene suficiente cuidado, ya que tiene dos significados completamente diferentes en los respectivos sistemas tipo. NULL en SQL significa, "valor ausente, coincidirá con cualquier comparación", mientras que null en .NET significa "ningún objeto, la comparación contra null siempre dará como resultado falso".

0

que tienen esta consulta trabajando en este escenario

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

espero que ayude.