Usando la palabra clave igual en Linq [duplicado
-
27-10-2019 - |
Pregunta
Posible duplicado:
Expresión de lambda: == vs.Equals ()
Hola,
Utilizo mucho la palabra clave es igual a comparar variables y otras cosas.
pero
wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
devolver un error en tiempo de ejecución cuando en la región de datos es nula
Tuve que usar el código
wines = wines.Where(d => d.Region == paramRegion).ToList();
Para deshacerse del error.
¿Alguna idea de por qué esto plantea un error?
Gracias.
Solución
No puede llamar a métodos de instancia con referencia de objeto nulo. Debe verificar que la región no sea nula antes de llamar a sus métodos de instancia.
wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();
los d.Region == paramRegion
se amplía (lo más probable) a object.Equals(d.Region, paramRegion)
y ese método estático verifica si los parámetros son nulos o no antes de llamar al método igual ().
También puede escribir la condición en diferente orden si sabe que el paramRegion
no puede ser nulo.
Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();
Otros consejos
Básicamente si
d.Region == null
Entonces cualquier llamada de método, aquí está Iguales (...) En eso aumentará una excepción ya que no se inicializa.
Uso puede usar:
paramRegion.Equals(d.Region)