2010-03-12 7 views
3

Dans une application WPF je voudrais vérifier si un retour d'une requête LINQ to SQL contient des enregistrements, mais mon approche ne fonctionne pas:Comment vérifier les résultats de requête LINQ to SQL?

 TdbDataContext context = new TdbDataContext(); 
     var sh = from p in context.Items where p.Selected == true select p; 

     if (sh == null) 
     { 
      MessageBox.Show("There are no Selected Items"); 
     } 

Où suis-je tort?

Répondre

8

Une requête linq ne sera jamais nulle car elle renverra toujours un IQueryable. Essayez d'appeler sh.Any() à la place.

if (!sh.Any()) 
    MessageBox.Show("There are no Selected Items"); 
+0

... ou sh.Count, bien sûr :) – kiwipom

+0

@IanR: 'IQueryable' ne dispose pas d'une propriété' Count'. 'Any()' est la bonne réponse. –

+0

@ 280Z28 - Désolé, mon mauvais, je pensais à la méthode d'extension Count(), mais comme quelqu'un d'autre l'a souligné, cela énumérerait la séquence .. +1 de moi pour Any(), de toute façon :) – kiwipom

1
var query = (from k in context.invis select k.invoice); 
    if (query.Count() > 0) 
    { 

    } 
    else 
    { 

    } 
    //