9
votes

Tableau de données Sélectionnez Top 5 lignes

hi est là un moyen de sélectionner les 5 premières lignes d'une table de données sans itération?


7 commentaires

Pourquoi ne pas adapter le sélecteur de sous-couche que vous construisez votre dataTable / jeu de données? - Google Résultats Tout le reste serait une itération ...


Je ne suis pas sûr de ce que vous entendez par "sans itération". D'une manière ou d'une autre, si vous souhaitez énumérer des données dans une collection de n'importe quelle forme, vous devrez itérrer ces données à un moment donné. Même si vous utilisez la déclaration de Linq () (), vous allez éventuellement itérair à de nombreux enregistrements que vous prenez.


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


@darin: au moins vous n'utilisez aucune variable index :)


quel cadre construit-il?


@Darin: Vous seriez toujours itération avec cela ... Juste avec une boucle "déroulée" ... déployée ou non, le concept est le même. D'une manière ou d'une autre, vous devez "itérer" les rangées pour obtenir leurs données. La seule conclusion que je puisse arriver, c'est que je suis mal compris la signification / la compréhension de l'OP du mot «itération» dans ce contexte.


Il n'y a pas de voie directe dans .NET 2.0 Regardez cette solution Eggheadcafe.com/community/aspnet/2/15478/...


5 Réponses :


-3
votes

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

Ceci POST peut être d'une assistance aussi bien. p>

EDIT STRY> P>

Comme vous utilisez VS2005, utilisez le SELECT () CODE> Méthode dans la DataTable, comme: P>

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


1 commentaires

Mais obtenez une erreur: l'expression du filtre '' Top 5 '' n'évalue pas à un terme booléen.



17
votes

Je pense que vous pouvez utiliser LINQ:

datatable.AsEnumerable().Take(5);


8 commentaires

C'est fondamentalement une itération. C'est exactement ce que le queriste ne voulait pas!


Si je comprends, le Queriste ne veut pas écrire son propre code avec des itérations.


@Andreas: Techniquement parlant, appeler .asenumerable (). Prendre (5) est pas une itération ... encore. Cependant, d'une manière ou d'une autre, une itération sera nécessaire pour énumérer les données représentées par cette requête ... Donc, je ne comprends donc pas complètement l'objectif de l'OP.


@Belousov: C'est pourquoi je n'ai pas non plus avié :) @jrista: appeler une méthode n'est pas une itération, mais cela se retrouvera dans une itération ...


datatable.aSenumerable (). Prendre (5); est ok..mais j'utilise VS 2005, ce code ne fonctionnera pas.


Il n'y a pas de voie directe dans .NET 2.0 Regardez cette solution Eggheadcafe.com/community/aspnet/2/15478/...


Pavel Belousov, la syntaxe correcte est suivante. yourdatatable.Aneumérable (). detype (). Prenez (5) Merci


@Ramakrishnankt Yep Votre méthode fonctionne clairement, car j'utilise le code de Pass to GridView



0
votes

Utiliser 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))


0 commentaires

0
votes

C'est ce qui a fonctionné pour moi: xxx


0 commentaires

0
votes

Cela fonctionne pour mes besoins.

dataTable.TopRows(5);


0 commentaires