Comment sélectionner des valeurs min et max d'une colonne dans une table de données?
Pour la suite de la datatable colonne, ce qui est le moyen le plus rapide pour obtenir les valeurs min et max?
AccountLevel
0
1
2
3
Vous devez vous connecter pour publier un commentaire.
Oui, c'est vraiment le moyen le plus rapide. À l'aide de Linq
Min
etMax
extensions sera toujours plus lent car vous avez à la parcourir deux fois. Vous pouvez éventuellement utiliser LinqAggregate
, mais la syntaxe n'est pas va être beaucoup plus jolie que ce ne l'est déjà.Int32.MaxValue
et le "max" doit être initialisée àInt32.MinValue
, de telle sorte que la première ligne (s'il y a des lignes à tous) sera toujours de mise à jour de ceux-ci.Easiar approche sur datatable pourrait être:
[]
dans le code ci-dessus.. e.gint minLavel = Convert.ToInt32(dt.Compute("min([AccountLevel])", string.Empty));
Sans les Crochets, il m'a donné une erreur.Utiliser LINQ. Il fonctionne très bien sur les tables de données, aussi longtemps que vous convertissez les lignes de la collection à un IEnumerable.
Édité pour corriger la syntaxe; il est difficile lors de l'utilisation de LINQ sur les tables de données, et de l'agrégation des fonctions sont le plaisir, aussi.
Oui, il peut être fait avec une seule requête, mais vous aurez besoin de générer une liste de résultats, puis l'utiliser .Min() et .Max() comme l'agrégation des fonctions dans des déclarations séparées.
Distinct
augmentera la vitesse de ce qu'il a de hachage de chaque élément, alors queMin
etMax
il suffit de faire une comparaison.Cela a bien fonctionné pour moi
Le moyen le plus efficace pour ce faire (croyez-le ou pas) est de faire des deux variables et d'écrire un
for
boucle.1 itération, linq style 🙂
accountTable
? Objets DataTable ne semblent pas à l'appui deAggregate
pour moi...une autre manière de faire est
Je ne suis pas sûr sur la performance de la partie mais cela ne donne de bons résultats
Performance sage, ce devrait être comparable. Utiliser l'instruction Select et de Tri pour obtenir une liste et ensuite choisir la première ou la dernière (selon votre ordre de tri).
Je ne sais pas comment ma solution compare les performances de sage pour les réponses précédentes.
Je comprends que la question initiale était: Quelle est la façon la plus rapide d'obtenir des valeurs min et max dans un objet DataTable, ce peut être une façon de le faire:
C'est un moyen facile d'atteindre le même résultat sans boucle. Mais les performances doivent être comparés avec les réponses précédentes. Pensé que j'aime Cylone Chats de répondre à la plupart.