2012-05-25 17 views
10

Estoy usando PetaPoco Micro-ORM con C# 4.0.¿Cómo verificar una var para el valor nulo?

El código siguiente recupera una sola fila de la base de datos:

var result = db.SingleOrDefault<TdUsers>(getUserQuery); 

me gustaría comprobar si o no el resultado contiene ninguna fila, y si es nulo. ¿Cuál es la mejor manera de hacer esto?

+0

¿Qué tienes? – sehe

Respuesta

15
if (result != null || result.Count() == 0) { 
    // Checks whether the entire result is null OR 
    // contains no resulting records. 
} 

creo que el problema no está en su cheque por null, porque LINQ es la carga diferida. Su error está en usar la expresión db.SingleOrDefault<TdUsers>(getUserQuery);.

.Single<T>(expression) no devuelve nulo - lo errores si el resultado no devuelve ningún valor. .SingleOrDefault<T>(expression), sin embargo, devuelve un valor nulo si la expresión no da como resultado ningún valor, y por lo tanto se combina mejor con una verificación de tipo if (result == null), como lo está haciendo aquí.

+0

Resultado intentado! = Nulo, pero muestra "Referencia de objeto no establecida en una instancia de un objeto". – RKh

+3

@RPK: ¿puedes publicar tu código en la pregunta? Esto debería funcionar. – ChrisF

+0

he editado mi ans –

1
var v = result.ToList(); 

Ahora compruebe

if (v.Count > 0) 
+0

Ver mi comentario a la respuesta anterior. –

3

Se podría hacer:

result.ToList() // Convert result to a list 

if (result.Any()) { 
    // result is not null 
} 
+0

NO result == null no siempre será falso ... ¿cuál crees que es el valor predeterminado de cualquier tipo de referencia? –

+0

@ParvSharma - correcto, ajustado. –

+0

:) .................... –

3
var result = db.SingleOrDefault<TdUsers>(getUserQuery); 

En encima SingleOrDefault código volverá Vale nulo o la especificada tipo genérico (se le conoce en tiempo de ejecución).

finde para comprobar si los valores devueltos es nulo o no puede simplemente usar

if(result!=null) 
{ 
//do your code stuff 
} 
else 
{ 
//stuff do be done in case where result==null 
} 
Cuestiones relacionadas