2010-04-08 5 views
1

Comment faire pour que cette méthode renvoie une valeur booléenne, en fonction du retour de la requête. Faux - rien, vrai - les données existent. Avant je viens de renvoyer int de uniqueQuote.Count() mais ne ressemble pas à une bonne méthode. Je vous remercie!ASP.NET vérifier si LinqToEntities a renvoyé quelque chose ou non

private bool CheckEnquiryUser(int enquiryId, Guid userId) 
      { 
       int selectedEnquiryId = enquiryId; 
       Guid currentUserId = userId; 
       Entities ctx3 = new Entities(); 
       var uniqueQuote = from quot in ctx3.Enquiries.Include("aspnet_Users") 
            where quot.EnquiryId == selectedEnquiryId && 
            quot.aspnet_Users.UserId == currentUserId 

           select quot; 

      bool exist = uniqueQuote; 
      return exist; 

Répondre

1

Utilisez le Enumerable.Any method:

return uniqueQuote.Any(); 

Ou passer le prédicat directement:

return ctx3.Enquiries.Include("aspnet_Users") 
      .Any(quot => quot.EnquiryId == selectedEnquiryId 
         && quot.aspnet_Users.UserId == currentUserId); 
0

Essayez quelque chose comme:

return uniqueQuote.Count() > 0; 
+0

N'utilisez jamais '.Count()> 0' lorsque vous voulez dire' .Any() '; ce dernier est beaucoup plus efficace, surtout lorsqu'il est converti en SQL. –

+0

Très vrai, n'a pas pensé à "Tout". Cependant .Count> 0 est probablement le moyen le plus rapide si vous avez déjà enregistré le résultat dans une collection. –

+0

Dépend de la collection. Si c'est une liste liée, 'Count()' sera plus lent que 'Any()'. Si c'est un 'List ', les performances devraient être similaires. * Cependant, * '.Any()' sera toujours plus expressif, 'Count()> 0' plus impératif. –

1

Je suis plus habitué à ce format, mais vous c une traduction à utiliser. Tout

return ctx3.Enquiries.Include("aspnet_Users") 
    .Any(x=> x.EnquiryId == selectedEnquiryId && 
      x.aspnet_Users.UserId == currentUserId); 
Questions connexes