J'ai une liste d'objets dont j'ai besoin pour trier la liste basée sur la propriété de l'objet1 et j'ai besoin de trier à nouveau la liste résultante avec la propriété de l'objet2 sans perdre le groupage obj a 2 nom de la propriété et l'emplacement je dois avoir une liste définitive des objets qui ont été triées avec la région et les objets de même région doivent être triés par nom ...liste triant dans C#
Répondre
(En supposant que vous n'avez pas LINQ à votre disposition, ce qui en fait trivial.)
Si vous regardez dans MiscUtil, vous trouverez deux classes utiles: ProjectionComparer
et LinkedComparer
(IIRC). Implémente fondamentalement le concept «order by» de LINQ - vous spécifiez comment convertir un élément source en une valeur clé, et le comparateur se commande par ces valeurs clés.
LinkedComparer
prend deux comparateurs et retourne un nouveau comparateur, qui utilise le comparateur « primaire » en premier, et le comparateur « secondaire » si les valeurs sont égales par rapport à la principale.
Créez deux comparateurs de projection (un pour chaque propriété), puis un comparateur avec les deux, puis passez à List<T>.Sort
. Faites-moi savoir si vous avez besoin d'un exemple de code complet, mais ce serait quelque chose comme (en utilisant C# 3):
var comparer = new LinkedComparer<Foo>
(ProjectionComparer<Foo>.Create(x => x.FirstProperty),
ProjectionComparer<Foo>.Create(x => x.SecondProperty));
(en C# 2, vous pouvez utiliser des méthodes anonymes, ils seraient tout simplement être un peu plus long winded.)
Une liste a une méthode de tri qui prend un délégué de comparaison comme argument. Il existe également des surcharges où vous pouvez passer votre propre comparateur. Vous pouvez donc écrire une classe qui implémente IComparer. Ensuite, dans l'implémentation de cette classe, vous écrivez le code où vous comparez les 2 objets sur les propriétés que vous voulez.
- 1. SQL dans ASP.NET - Ordre En ne triant qu'un seul type incorrectement
- 2. Fichier de liste dans C (.LST)
- 3. Fichier liste C# dans le répertoire
- 4. jquery triant les éléments dom en fonction de son css ("couleur")
- 5. C# liste variable privée
- 6. Liste des fonctions C++
- 7. Créer une liste d'objets C#
- 8. Trier la liste alternative C#
- 9. C++ liste liée accidentellement statique
- 10. Liste une liste dans la liste
- 11. Comment utiliser la zone de liste déroulante dans C#
- 12. Comment retourner la liste des chaînes dans C#
- 13. Déplacement d'éléments dans la liste chaînée C# .NET
- 14. C# - Plusieurs types génériques dans une liste II
- 15. Liste des bogues connus dans le compilateur C#
- 16. Liste de chaînes dans SqlCommand via les paramètres de C#
- 17. Utilisation des propriétés de liste déroulante dans C# NET 3.5
- 18. SelectedValue invalide - n'existe pas dans la liste - C#/ASP.NET
- 19. Sélection d'éléments dans une zone de liste en utilisant C#
- 20. tar (sur Windows) une liste de fichiers dans C#
- 21. Liste dynamique descendante des contrôles dans WindowsForms et C#?
- 22. Liste de cases à cocher remplir dynamiquement dans Asp.Net C#
- 23. Comment obtenir la liste des disques amovibles dans C#?
- 24. Studio visuel 2005: Liste <T> .First() Liste <T> .Dernières() méthodes dans C#?
- 25. C# - Incrémenter une liste de services web dans un répertoire et une liste disponibles Webmethods
- 26. à la liste Triangle (de # .NET/C)
- 27. C# comparaison 2 liste <object>
- 28. Affichage de la liste C# rester sélectionné
- 29. Liste des fichiers avec CheckBoxes (C#/WinForms)
- 30. Création d'une liste chaînée en C#?