AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [C#] Wie Liste mithilfe weiterer Liste sortieren?
Thema durchsuchen
Ansicht
Themen-Optionen

[C#] Wie Liste mithilfe weiterer Liste sortieren?

Ein Thema von Matze · begonnen am 18. Dez 2009 · letzter Beitrag vom 19. Dez 2009
 
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[C#] Wie Liste mithilfe weiterer Liste sortieren?

  Alt 18. Dez 2009, 21:35
Hallo,

ich habe eine Liste, die aus Instanzen besteht.

Code:
List<myClass> myList = new List<myClass>();
"myClass" enthält "Variablen" wie "Vorname", "Nachname" und "id", also myList.Vorname, myList.Nachname und myList.id. Die id entspricht dem Index der Liste.

Zusätzlich habe ich eine weitere Liste, die eine Auswahl von IDs von "myList" enthält:

Code:
List<int> mySmallList = new List<int>();
Nun möchte ich mySmallList mithilfe von MyList sortieren.

Beispiel:

MyList könnte 5 Einträge haben, beispielsweise diese:

Code:
myList[0].Vorname = "Hans";
myList[1].Vorname = "Hugo";
myList[2].Vorname = "Fritz";
myList[3].Vorname = "Dieter";
myList[4].Vorname = "Werner";
MySmallList könnte 3 Einträge beinhalten, beispielsweise so:

Code:
MySmallList[0] = 0; // Hans
MySmallList[1] = 3; // Dieter
MySmallList[2] = 4; // Werner
MySmallList soll nun so sortiert werden, dass die Vornamen der zugehörigen Einträge in myList aufsteigend (oder absteigend) sortiert sind. Das Ergebnis soll demnach das hier sein:

Code:
MySmallList[0] = 3; // Dieter
MySmallList[1] = 0; // Hans
MySmallList[2] = 4; // Werner
Mit Sort() komme ich vermutlich nicht weiter, da ich zur Sortierung beide Listen benötige.
Wie kann ich das denn möglichst performant sortieren?

Meine Überlegung war der Weg über eine weitere Liste, doch das kommt mir unsauber und langsam vor bei vielen Einträgen:

Code:
List<myClass> tempList = new List<myClass>(MySmallList.Count);

foreach (int id in mySmallList)
{
    tempList.Add(myList[id]);
}

tempList.Sort(/* ... */);
MySmallList.Clear();

foreach (myClass entry in tempList)
{
    MySmallList.Add(entry.id);
}

tempList.Clear();
Alle Codes ungetestet, aber das Prinzip sollte klar werden.

Grüße, Matze
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz