2009-04-27 14 views
3

Je ne vois pas comment écrire une requête unique.Combiner deux requêtes de comptage dans une requête booléenne

int count1 = query1.Count(); 
int count2 = query2.Count(); 

return count1 > count2; 

S'il vous plaît noter que je suis intéressé par les moyens d'écrire une seule requêtequi retourne une valeur booléenne et obtient évaluée une fois sur le serveur.

S'il vous plaît noter que je suis intéressé par des façons d'écrire cela avec LINQ, pas avec SQL.

+0

Peut-être plus d'aide si vous nous dites quelles sont les requêtes. – Kibbee

+0

Ils pourraient être n'importe quoi. Supposons que query1 est db.Customers et que query2 est db.Products. –

Répondre

4

Essayez

return query1.Count() > query2.Count(); 

Ce n'est pas la peine d'essayer d'exécuter deux requêtes non liées dans le même appel de serveur, mais ici il est:

SELECT CASE WHEN (SELECT COUNT(*) FROM Products) 
     > (SELECT COUNT(*) FROM Orders) 
      THEN CAST(1 as bit) 
      ELSE CAST(0 AS BIT) 

Cependant, je doute sérieusement que vous pouvez obtenir LINQ pour créer ce genre de requête. Vous devrez appeler une procédure stockée à la place.

+0

Non, cela compare les résultats de l'émission de deux requêtes distinctes. –

0

Quel est le problème avec

var result= query1.Count() > query2.Count(); 

return result; // result is of type bool 

EDIT:

Si vous voulez vraiment l'exécuter comme une requête sur le serveur, vous pouvez utiliser DataContext.ExecuteQuery pour exécuter une requête dynamique.

+0

Non, cela compare les résultats de l'émission de deux requêtes distinctes. –

Questions connexes