2009-10-16 7 views
0

Je commence par linqToSql et j'ai encore quelques problèmes pour faire mes requêtes. Par exemple, je souhaite récupérer dans la même requête deux valeurs, un sous-ensemble d'éléments et un nombre entier avec le nombre d'éléments. Voilà comment je l'ai fait séparément:Récupérer deux valeurs dans la même requête linq

int totalElements; 
    IEnumerable<ClsTax> result; 
    result = (from t in db.tax 
      select new ClsTax { Tax = t.tax1, Increase = t.increase }).Take(25); 

    totalElements = (from t in db.tax 
      select new ClsTax { Tax = t.tax1, Increase = t.increase }).Count(); 

Comme vous pouvez le voir, je ne peux pas utiliser result.count() parce que je Take (25) pour obtenir que les 25 éléments firsts, et je veux savoir combien d'éléments sont dans la base de données.

Existe-t-il un moyen d'obtenir les deux valeurs en utilisant une seule requête linq?

Merci!

Répondre

3

Que diriez-vous:

var all = (from t in db.tax select new ClsTax { Tax = t.tax1, Increase = t.increase }); 
var count = all.Count(); 
var result = all.Take(25); 

peu plus simple?

+0

Oui, un peu plus simple, mais je veux minimiser les appels de base de données et le trafic. 'Tous' peut contenir plusieurs enregistrements. – Jonathan

+1

Tous ne contiendront pas beaucoup d'enregistrements. C'est à cause de l'exécution différée. Téléchargez LinqPad, essayez d'exécuter cette requête et regardez le code SQL. Deux requêtes seront générées - la première sera une requête SELECT COUNT et la seconde une requête SELECT TOP 25. –

+0

@joe: alors ... c'est une solution simple et élégante à la fois. Je vais l'accepter. Thaks à vous et à CodeMonkey. Je vais prendre votre avance et télécharger LinqPad. – Jonathan

1

Essayez ceci:

var result = (from t in db.tax group t by t.ID into g select new { Tax = g.First().tax1, Increate = t.First().Increase, TotalElements = g.Count() }); 
+0

Je ne peux pas le faire fonctionner. Pourriez-vous m'expliquer un peu votre code, s'il vous plaît? Je ne veux pas de poisson, je veux une canne à pêche! : D Merci! – Jonathan

+0

Ce code sélectionne une classe/type anonyme avec toutes les informations dont vous avez besoin + le nombre d'éléments – k0ni

Questions connexes