2011-04-12 17 views
5

Los siguientes trabajos como se esperaba (LINQ a Entidades):anulable no int funciona como se espera en LINQ (C#)

var topics = (from t in ctx.Topics where t.SubjectId == subjectId && t.ParentId == null select new { t.Title, t.Id }).ToList(); 

Sin embargo, el siguiente devuelve nada:

int? parent = null; 
var topics = (from t in ctx.Topics where t.SubjectId == subjectId && t.ParentId == parent select new { t.Title, t.Id }).ToList(); 

Topic.ParentId es una nullable int. Es fácil evitarlo, pero esto me desconcierta. ¿Alguien puede arrojar algo de luz?

+0

Jon Skeet al rescate! ;-) –

+0

La misma pregunta aquí: http://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework/4262617#4262617 – Slauma

Respuesta

4

Definitivamente no es la primera persona en observar este ... comportamiento interesante.

http://connect.microsoft.com/data/feedback/details/607404/entity-framework-and-linq-to-sql-incorrectly-handling-nullable-variables

En resumen, es difícil de manejar diferentes formas de expresar nula.

+1

Gracias. Del enlace en su respuesta, encontré una solución fácil: t.ParentId.Equals (parent). ¡Pero qué extraño! ¡Me alegra que no sea solo que me estoy volviendo loco! – James

+0

@James, creo que este trabajo solo funciona para Linq en SQL y no en Linq para Entidades ... ¿Funcionó para Linq para Entidades para usted? –

+0

@zespri No, ¡publiqué demasiado pronto! Funciona cuando parent es nulo, pero no en otros casos. Terminé con if (parent == null) ... – James

Cuestiones relacionadas