J'utilise PetaPoco Micro-ORM avec C # 4.0.
Le code ci-dessous récupère une seule ligne de la base de données:
var result = db.SingleOrDefault<TdUsers>(getUserQuery);
Je voudrais vérifier si le résultat contient ou non des lignes et s'il est nul. Quelle est la meilleure façon de procéder?
if (result == null || result.Count() == 0) {
// Checks whether the entire result is null OR
// contains no resulting records.
}
Je pense que le problème n'est pas dans votre vérification de null
, car linq est un chargement paresseux. Votre erreur réside dans l'utilisation de l'expression db.SingleOrDefault<TdUsers>(getUserQuery);
.
.Single<T>(expression)
ne retourne pas null - il génère une erreur si le résultat ne renvoie aucune valeur. .SingleOrDefault<T>(expression)
, cependant, renvoie une valeur nulle si l'expression ne donne aucune valeur - et est donc mieux combinée avec une vérification de type if (result == null)
, comme vous l'utilisez ici.
var result = db.SingleOrDefault<TdUsers>(getUserQuery);
Dans le code ci-dessus, SingleOrDefault retournera null vale ou le type générique spécifié (il est connu à l'exécution).
Pour vérifier si les valeurs retournées sont nulles ou non, vous pouvez simplement utiliser
if(result!=null)
{
//do your code stuff
}
else
{
//stuff do be done in case where result==null
}
Vous pourriez faire:
result.ToList() // Convert result to a list
if (result.Any()) {
// result is not null
}
var v = result.ToList();
maintenant vérifiez
if (v.Count > 0)