| Autor |
Beitrag |
C#
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Mi 07.09.11 23:02
Hallo @ll,
ware lange nicht mehr im Forum, da ich sehr wenig Zeit hatte...
Auf jeden Fall hab ich ein Problem ne SortedList zu sortieren.
C#-Quelltext 1: 2: 3: 4: 5:
| public MainProcess() { AllFiles = new SortedList<int, string[]>(IntComparer); InitializeComponent(); } |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| FileInfo info = new FileInfo(line); string name = info.Name.Replace(info.Extension, null); string date = info.CreationTime.ToShortDateString(); long volume = info.Length; string dir = info.DirectoryName; string type = info.Extension.Remove(0, 1).ToUpper() + "-Datei"; string[] InfoSet = new string[] {name, date, volume.ToString(), dir, type }; AllFiles.Add(AllFiles.Count,InfoSet); |
So und jetzt möchte ich die Liste - je nach ausgewählter Option - nach name, date, volume, dir oder type sortieren.
ich habe mich vorher noch nicht mit diesem Thema beschäftigt und brauche desshalb hilfe...[/i]
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Do 08.09.11 08:22
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Do 08.09.11 13:06
Ok das mit der eigenen Klasse war ne gute Idee. Aber ich glaube du hast mich falsch verstanden.
Ich will das string[] Array in einer SortedList<int, string[]> sortieren.
Jetzt habe ich z.B. 3 Arrays:
Nr. | Name | Volume | Typ | Erstelldatum | Verzeichnis
1 | Config | 120034 | .cfg | 10.10.2009 | C:\
2 | Setting | 65530 | .ini | 15.08.2010 | C:\Windows\
3 | App | 600032 | .dat | 23.04.2008 | C:\users\admin\
So und die Nummer ist ja der Index meiner SortedList und der Rest sind Komponenten von meinem string[]-Array. Und jetzt möchte ich die Liste - je nach ausgewählter Option - nach "Name", "Volume", ... sortieren können. Ich hab aber noch keine genaue Ahnung wie das funzen soll.
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Do 08.09.11 13:21
nehme doch wie ich vorgeschlagen hatte eine die eigene Klasse als sortedList
C#-Quelltext
dann kannst du die sortieren wie in meinem beispiel!
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Do 08.09.11 13:35
Ok des habe ich jetzt verstanden, aber muss ich mit deinem var beispiel in eine neue Klasse bzw. wo soll ich das hinsetzten?
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Do 08.09.11 13:44
naja was willste den mit der liste machen? eine liste sortieren ist die eine sache, aber darstellen musst du die ja dann auch noch (zum beispiel in einem datagridview) zum beispiel könntest du radiobuttons erstellen und dort wählen lassen nach welchem kriterium sortiert werden soll (dann eventuell noch auf und absteigend)
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Do 08.09.11 13:58
Ja das habe ich alles schon gemacht. Mir fehlt als letztes eben nur noch das sortieren der Liste. Das Programm liest ganz einfach alle Dateien in den angegebenen Ordner aus und sammelt die Infos zu den Dateien, sprich Typ, Speichergröße, ... und diese ganzen Dateien werden dann entweder in eine Text, Word oder Excel Datei geschrieben. Sprich die komplette Liste AllFiles wird dann in die Datei geschrieben.
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Do 08.09.11 14:06
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| SortedList<int, File> allFiles = new SortedList<int,File>(); var sortedfile = (from fil in allFiles orderby fil.Value.Datei select fil).ToList(); allFiles.Clear() foreach (var fil in sortedfile) { allFiles.Add(fil.Key, fil.Value); } |
Für diesen Beitrag haben gedankt: C#
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Do 08.09.11 15:05
//EDIT
Ok jetzt ist doch noch ein Problem aufgetreten. Und zwar wenn ich
C#-Quelltext 1:
| var sortedfile = (from fil in allFiles orderby fil.Value.Name select fil).ToList(); |
in
C#-Quelltext 1:
| var sortedfile = (from fil in allFiles orderby fil.Value.Volume select fil).ToList(); |
(oder einen anderen Typen) ändere, sortiert das Programm immer noch Alphabetisch nach Name.
Muss ich noch was anderes ändern, oder brauch ich zum sortieren von long und DateTime andere Codezeilen?
Allerdings funktioniert das auch beim sortieren von Type nicht, welches ja auch nur ein string ist.
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 08.09.11 19:02
sortedfile wird wohl richtig sortiert sein. Wo schaust du denn ob es richtig sortiert ist?
Wenn du in allFiles nachschaust also nach einer Operation wie sie dark-destination1988 zeigt ist das kein Wunder. Ein SortedList ist immer nach dem Key sortiert. Egal in welcher Reihenfolge die in die SortedList eingefügt wurden, wofür wäre auch sonst der Key gut? Bist du dir sicher das du mit SortedList die richtige Wahl getroffen hast?
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Do 08.09.11 19:09
Sieht wohl nicht so aus...
Dann muss ich dass doch in ner neuen Klasse machen oder? Mit IComparer oder IComparision. Aber ich weis nicht wie ich das hinbekommen soll.
Würde mich für hilfe bedanken.
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Fr 09.09.11 07:08
meiner meinung würde eine normale liste auch genügen
C#-Quelltext
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: So 11.09.11 20:45
Ja denke ich auch, aber ich brauche hilfe bei dem Sortier-Algo.
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: So 11.09.11 23:53
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 12.09.11 00:16
C# hat folgendes geschrieben : | | Ok. Ich hab jetz ne ganz einfache Lösung gefunden. |
Für mich ist
C#-Quelltext 1:
| allFiles.OrderBy(info => info.name) |
immer noch kürzer  . Man darf nur eben nicht erwarten, dass dann die Liste selbst sortiert ist  .
_________________ >λ=
|
|
C# 
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Mo 12.09.11 17:53
xD. Alos meine Methode funktioniert super und einwandfrei. Solang diese läuft bin ich happy xD
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
|