Me encontré con un problema bastante extraño con linq-to-sql. En el siguiente ejemplo,Linq donde columna == (referencia nula) no es lo mismo que columna == nulo
var survey = (from s in dbContext.crmc_Surveys
where (s.crmc_Retail_Trade_Id == tradeId) && (s.State_.Equals(state))
select s).First();
Si TradeID es nulo, no se comporta como si hubiera especificado nula específicamente como esta vez,
var survey = (from s in dbContext.crmc_Surveys
where (s.crmc_Retail_Trade_Id == null) && (s.State_.Equals(state))
select s).First();
Cuál es mi comportamiento deseado. De hecho, no devuelve nada a menos que ambos valores sean no nulos. No puedo entender cómo lograr esto sin varias consultas de linq diferentes. ¿Algunas ideas?
Sí, supongo que esa es la respuesta obvia. Pero las mentes inquisitivas quieren saber por qué un nulo constante es diferente de una variable que apunta a nulo. – Boog
Sospecho que Joel Coehoorn tiene razón en que el segundo caso de su pregunta se traduce a una consulta SQL que especifica nulo directamente. – jball
Parece una falla muy grande o incluso un error en el analizador de linq de Microsoft para no manejar apropiadamente las referencias a objetos nulos, pero tomaré sus palabras para ello. – Boog