2010-07-14 10 views
8

Salut est-il possible de sélectionner les 5 premières lignes d'une table de données sans itération?Tableau de données sélectionnez les 5 premières lignes

+1

Je ne sais pas ce que vous entendez par « sans itération ». D'une façon ou d'une autre, si vous souhaitez énumérer des données dans une collection de n'importe quelle forme, vous devrez itérer ces données à un moment donné. Même si vous utilisez l'instruction .Take() de LINQ, vous finirez par parcourir de nombreux enregistrements. – jrista

+0

@jrista, vous pouvez toujours faire 'row [0], row [1], ..., row [4]' et éviter l'itération :-) –

+0

@darin: au moins vous n'utilisez pas de variable d'index :) –

Répondre

-1

Si vous utilisez une instruction LINQ, vous pouvez utiliser la méthode Take().

Cette post peut également être utile.

EDIT

Comme vous utilisez VS2005, utilisez la méthode SELECT() dans la datatable comme ceci:

DataRow[] rows = datatable.Select('TOP 5'); 
+0

mais je reçois une erreur: L'expression de filtre '' Top 5 '' n'évalue pas à un terme booléen. –

14

Je pense, vous pouvez utiliser LINQ:

datatable.AsEnumerable().Take(5); 
+0

c'est essentiellement une itération. c'est exactement ce que le queriste ne voulait pas! –

+0

+1 Battez-moi. ;) – jrista

+0

@Andreas Niedermair, si je comprends bien, Querist ne veut pas écrire son propre code avec des itérations. –

0

aide 2 des messages ci-dessus, les œuvres suivantes pour moi:

foreach (DataRow _dr in DataSet.Tables[<tblname>].Select("", "Timestamp DESC").AsEnumerable().OfType<DataRow>().Take(5)) 

Alors maintenant, vous pouvez normalement filtrer si vous voulez, l'ordre si vous voulez et seulement ensuite la quantité d'enregistrements que vous voulez, puis itérer les que ce soit 1 ou 100.

Hope qui aide quelqu'un .

0

C'est ce qui a fonctionné pour moi:

datatable.Rows.Cast<System.Data.DataRow>().Take(5); 
Questions connexes