2009-03-26 11 views
1

Quel est le meilleur pour le tri d'une table de données en C#, à la fois d'une performance et un point de vue-lisibilité de code:Quelle est la meilleure façon de trier une table de données dans ADO.NET

personsDT.OrderBy(person => person.PersonName); 

ou:

personsDT.DefaultView.Sort = "PersonName ASC"; 

le personsDT est construit à partir d'une liste SharePoint, il est donc impossible d'utiliser SQL (je sais que ORDER BY dans une instruction Claude SQL SELECT serait la meilleure façon). Compte tenu de la performance, je crains que la clause OrderBy <> soit plus lente que le tri dans la vue des données. Êtes-vous conscient de ces implications de performance?

Répondre

4

Je préfère la première option.

1) Pour le code du point de vue de lisibilité, je pense que Lambda est plus clair que le second.

2) Dans le premier cas, vous utilisez une méthode fortement typée pour trier votre entité, ce qui est bon.

3) Dans le second cas vous passez le champ et l'ordre dans une chaîne mmmm ne l'aime pas.

Allez Lambdas !!!

Cordialement!

1

Quel est le but de la question? La performance est presque certainement un non-problème; sinon, vous devrez le tester dans votre contexte. Je pense que si vous spécifiez un tri pour une instruction SQL, il devrait être dans l'instruction SQL; et je préfère éviter de construire des instructions SQL en chaîne si possible. Lequel préférez-vous esthétiquement?

+0

Je pense que la question est valide; Après avoir rempli un DataTable, vous devrez peut-être lui fournir différentes "vues" triées. Pourquoi revenir à la DB si vous pouvez (re) le trier localement. –

0

Eh bien, si les performances sont très importantes, triez-les sur la base de données SQL avant d'obtenir les données.

+0

L'auteur indique que la source de données est une liste de points de partage et qu'il connaît la méthode sql ORDER BY, mais ne peut pas l'utiliser, bien que je ne sache pas si cela a été écrit avant ou après votre réponse. – GenericMeatUnit

1

jeter mon 2c dans le pot:

Venant d'un arrière-plan sql, je trouve la façon sql plus intuitive - mais aucune raison de le suivre. La méthode lambda a plusieurs bonnes recommandations pour cela:

Comme MRFerocius (le «o» intentionnel manquant?) Manque - la méthode lambda est fortement typée. C'est une bonne chose.

Et puis, il y a ceci: si vos critères de tri devenaient de plus en plus compliqués, la méthode lambda vous permettrait d'ajouter des conditions supplémentaires et ésotériques que la méthode sql n'aurait pas.

En ce qui concerne les performances, elles devraient être à peu près égales, pour une condition simple comme celle-ci.

Questions connexes