web-dev-qa-db-fra.com

Quelle est la meilleure façon de vérifier que le jeu de résultats IQueryable est nul

Je veux juste savoir quelle est la meilleure façon de vérifier si un résultat IQueryable n'a pas de valeurs.

par exemple. si nous avons une méthode comme

public static IQueryable<Table> DisplayAll()
{
    var db = new DataContext();
    var list= from data in db.Table select data;
    return list;
}

puis nous faisons quelque chose comme ça

var list = DisplayAll();
if(list != null)
{
     //do something --- in here even if the result set has no values it will
     // go to this line. It just say `enumeration yielded no results`
}

Tout moyen possible de vérifier que le jeu de résultats a du contenu ou non ??

Merci

38
huMpty duMpty

list ne sera jamais null avec LINQ; il représentera simplement une "collection vide" si besoin est. La façon de tester est avec la méthode d'extension Any:

if (list.Any()) {
    // list has at least one item
}
81
Jon

Une exception sera levée si IQueryable n'obtient aucun résultat. J'utilise:

using System.Data.Entity; //for Async support in EF
var tQ = await _tableRepository.DisplayAll();
try { return await tQ.ToListAsync(); }
catch { return null; }

pour intercepter l'exception et retourner null; ou une liste vide si vous préférez,

catch { return new List<Table>(); }
1
OzBob