tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
423
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Pseudonymm Tutorials.de Gastzugang
    Hallo,

    ich habe bereits einiges im internet gelesen, dass man eine Liste in c# anscheinend ganz leicht sortieren kann.
    Leider bin ich neu in c# und weiß nicht genau wie das mit diesen Comparison geht.

    Also ich habe eine eigene Cell-Klasse, welche eine Eigenschaft ID hat... also jede Zelle eine andere ID ...
    nun würde ich gerne eine Liste<Cell> gerne nach dieser ID sortieren.
    Wie geht das? Ein wenig Code-Beispiel wäre sehr hilfreich.

    Danke

    PS: des weiteren hat jede Zelle x und y koordinaten... ist es auch möglich nach disesen koordinaten zu sortieren?

    Danke
    KeinName
     

  2. #2
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    public static void Main()
         {
             List<Cell> liste = new List<Cell>();
             liste.Sort(new Cell_ID_Comparer());
         }
        
         private class Cell_ID_Comparer : IComparer<Cell>
         {        
             public int Compare(Cell x, Cell y)
             {
                 if (x.ID < y.ID) return -1;
                 if (x.ID > y.ID) return 1;
                 return 0;
             }
         }
     

  3. #3
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    So wie Shakie vorschlägt.

    Oder da du eh eine eigene Klasse hast könntest du bei dieser auch die Schnittstelle IComparable<T> implementieren.
    Und dann einfach list.Sort() aufrufen.
    Sort() schaut nämlich nach ob ein standrd comparer definiert wurde, welches du über die schnittstelle getan hast.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  4. #4
    Avatar von Danielku15
    Danielku15 Danielku15 ist offline Mitglied Platin
    Registriert seit
    Feb 2004
    Ort
    Österreich
    Beiträge
    731
    Blog-Einträge
    3
    Um noch die dritte Variante in die Runde zu werfen:
    Es gibt auch die Möglichkeit über ein Comparison-Delegate (eine Art Funktionspointer) die Vergleichsfunktion anzugeben.
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
            static void Main()
            {
                List<Cell> list = new List<Cell>();
                list.Sort(CompareCells);
            }
     
            private int CompareCells(Cell x, Cell secondCell)
            {
                if (x.ID < y.ID)
                    return -1;
                if (x.ID > y.ID)
                    return 1;
                return 0;
            }

    Die schönste Variante wäre natürlich die von Spyke genannte. Die Variante über einen IComparer<T> oder eine Comparator Methode verwendet man (oder ich) eigentlich nur wenn die Objekte auf eine spezielle Weise sortiert werden soll, oder wenn die Klasse aus einem anderen Framework stammt.
     

Ähnliche Themen

  1. JQuery Listen sortieren/Drag/Drop?
    Von bernd00 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.10.10, 17:23
  2. HTML Listen sortieren mit JQuery
    Von Thomas Darimont im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 18.02.10, 11:12
  3. Antworten: 5
    Letzter Beitrag: 24.09.08, 00:10
  4. Mehere Listen in einem Dialog bei Headerclick sortieren
    Von ToDu im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 31.07.06, 09:25
  5. DLL Listen- Absturz, Listen übergeben
    Von haemmer im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 05.02.04, 21:00