Si j'ai un DataTable
avec une petite ou grande quantité de données, pour sélectionner les données de la datatable, je peux utiliser la méthode Datatable.Select()
ou aller pour LINQ. Lequel est plus rapide et efficace?Lequel utiliser? Datatable.Select() ou LINQ?
Répondre
Lequel est le mieux pour votre situation? Ou, plus important encore, la différence de vitesse pour la quantité de données que vous interrogez vaut-elle la peine de choisir l'une par rapport à l'autre? À mon avis, LINQ est généralement plus facile à lire que n'importe quel autre type de filtrage de données et présente l'avantage d'être au moins partiellement typé, ce qui rend plus difficile les erreurs.
// Using DataTable.Select()
DataRow[] records = myTable.Select("(MyIntField > 30 AND MyStringField == 'StringValue') OR AnotherField > 70");
// Using LINQ
var records = from record in myTable.AsEnumerable()
where (record.Field<int>("MyIntField") > 30
&& Record.Field<string>("StringValue") == "StringValue")
||
(record.Field<int>("AnotherField") > 70)
select record;
La requête LINQ est plus grande, mais personnellement, je pense qu'il est plus lisible
Si tu veux une exécution plus rapide puis Datatable.Select() ou vous pouvez aller pour LINQ
mais c'est ce que l'OP a dit. –
Lequel sera le plus rapide? Vous seul pouvez dire.
- Quelle est la quantité de données
- Combien de dossiers sont renvoyés
- Comment avez-vous l'intention d'utiliser le résultat par exemple utiliserez-vous toujours chaque enregistrement dans le résultat?
- Quelle est la complexité du filtre
Tous ceux qui peuvent avoir un impact solution sera le plus rapide. Comme toujours, si vous n'avez pas de problème de performances, n'optimisez pas. Si vous avez un problème de performance, utilisez un profil pour savoir où optimiser.
Si vous n'avez pas de preuve tangible que le problème de sélection est un problème de performance, optez pour la lisibilité. Dans mon esprit, cela se traduit par la solution LINQ.
- 1. OpenCL ou OpenGL - lequel utiliser?
- 2. Accès: Texte, Mémo ou VarChar? Lequel utiliser?
- 3. DataTable.Select injection
- 4. lequel est le meilleur pour remplir DataGridView lambda ou linq?
- 5. Lequel utiliser const const [] ou const std :: string?
- 6. JavaScript: Lequel dois-je utiliser, Microsoft.XMLHTTP ou Msxml2.XMLHTTP?
- 7. Procmail vs. Maildrop - lequel utiliser?
- 8. DataTable.Select() - Comparaison des GUID
- 9. lequel choisir? DXCore, Resharper ou VSX?
- 10. DirectX, DX géré, XNA, lequel utiliser?
- 11. Tamponné vs non tamponné, lequel utiliser?
- 12. Phing, Xinc ou phpUnderControl - lequel durera?
- 13. Test de sous-chaîne dans DataTable.Select()
- 14. Problème avec la méthode DataTable.Select
- 15. Lequel est le meilleur? OpenCyc ou ConceptNet?
- 16. linq à sql ou LLBL
- 17. DataTable.Select Expression en utilisant IN et Comme
- 18. PHP vs OO PHP - Lequel utiliser?
- 19. lequel plus rapide, getimeofday ou clock_gettime?
- 20. Lequel est le meilleur? "var" ou "DataType"?
- 21. Lequel est le meilleur? URLReWriter.net ou URLReWriting.NET
- 22. Branche de révision ou HEAD? Lequel choisir
- 23. Linq ou ADO ou?
- 24. linq ou contient?
- 25. LINQ, devrais-je JOIN ou utiliser imbriqué SELECT NEW
- 26. Quand utiliser "LINQ to SQL", framework d'entité, ou NHibernate?
- 27. Comment utiliser "contains" ou "like" dans une requête linq dynamique?
- 28. Lequel est correct? catch (_com_error e) ou catch (_com_error & e)?
- 29. Lequel dois-je utiliser et pourquoi? Est-ce que ça importe? SafeUnicode ou django.utils.safestring.mark_safe()?
- 30. Lequel utiliser - "operator new" ou "operator new []" - pour allouer un bloc de mémoire brute en C++?
y at-il une différence de performance sera là si j'utilise LINQ sur Datatable.Select()? –
@Kishore, comme je l'ai dit, vous aurez vraiment besoin de tester cela vous-même. Cela va varier selon ** la quantité de données que vous retournez ** et ** la complexité du filtre que vous tentez d'appliquer aux données **. S'il y a une différence de performance, elle peut être si petite qu'elle ne vaut pas la peine d'être inquiétée. – Rob
@Kishore: Si vous voulez avant tout des performances, n'utilisez pas non plus. Allez bas. –