Pouvez-vous conseiller une solution de comment trier IEnumerable<byte> indexes
dans .NET 3.0 (pas LINQ)? Bien sûr, il est possible de déterminer indexes
longueur, créer un tableau, copier élément par élément, puis appeler Array.Sort(array)
. Mais peut-être pouvez-vous suggérer autre chose?Commander IEnumerable sans LINQ
Répondre
Tant que vous n'utilisez pas le compilateur 2.0 (donc: VS 2008/2010/2012), vous pouvez utiliser LINQBridge, et utiliser LINQ-to-Objects à partir de votre code .NET 2.0/3.0.
L'autre solution est paresseux:
List<byte> list = new List<byte>(indexes);
list.Sort();
// list is now a sorted clone of the data
Puisque vous ne pouvez pas vraiment changer un IEnumerable, vous devrez copier les données ailleurs pour le trier.
Cependant, notez que vous triez les octets, vous pouvez utiliser Bucket Sort pour un tri ultra-efficace.
http://www.codeproject.com/Articles/80546/Comparison-Sorting-Algorithms-in-C-Explained
C'est bien pratique quand j'étais à la recherche d'une solution
Ne pensez pas qu'il y ait une autre solution, puis itérer sur "manuellement", dans C# 2.0
Une autre option de création de tableau.
Vous pouvez créer un List<>
var list = new List<byte>(indexes);
list.Sort(delegate(byte b1, byte b2)
{
//your comparison logic here
});
Il est plus compact alors simple, for
ou foreach
itération sur la collecte.
L'intégralité du IEnumerable<>
doit être lue lorsque vous le triez, donc il n'y a pas moyen de contourner cela. Même la méthode Linq to Objects Sort
conserve la totalité de la collection en mémoire.
Créer un List<byte>
du IEnumerable<byte>
et le tri:
List<byte> list = new List<byte>(indexes);
list.Sort();
- 1. C# LINQ Commander un exemples IEnumerable en fonction de l'ordre des éléments d'un autre IEnumerable
- 2. LINQ IEnumerable OrderBy
- 3. Linq Filtre IEnumerable contre un autre IEnumerable
- 4. LINQ IQueryable à IEnumerable
- 5. LINQ à IEnumerable où l'enfant IEnumerable
- 6. LINQ IEnumerable DataRow Select
- 7. tri IEnumerable LINQ
- 8. Tri IEnumerable dans LINQ
- 9. Linq compare entre IEnumerable
- 10. LINQ Sélectionnez l'expression IEnumerable
- 11. LINQ sélectionner avec IEnumerable
- 12. LINQ IEnumerable et List
- 13. LINQ - GROUP BY IEnumerable
- 14. Commander Linq Rejoignez
- 15. Commander par en Linq
- 16. problèmes pour accéder à IEnumerable dans LINQ
- 17. syntaxe LINQ appropriée pour commander IEnumerable en fonction de la valeur dans ICollection
- 18. résultat sérialisation d'un LINQ IEnumerable
- 19. collection Convertir de IEnumerable LINQ
- 20. LINQ renvoie une valeur IEnumerable
- 21. LINQ: Comment déclarer IEnumerable [AnonymousType]?
- 22. commander et rejoindre dans linq
- 23. Commander par linq en rejoignant
- 24. Commander LINQ par "string" name
- 25. Cast Linq IEnumerable à la classe qui hérite IEnumerable
- 26. IEnumerable sans données
- 27. décorer IEnumerable sans boucler
- 28. LINQ ne fonctionne pas sur IEnumerable
- 29. Erreur de conversion Linq parallequery à IEnumerable
- 30. comment commander asc/dsc avec lambda ou linq