| |

VB.NET - FortgeschritteneZweistufiges Sortieren einer Arraylist | |  | Autor: STSC | Datum: 24.05.06 19:04 |
| Hallo,
ich importiere eine XMLTV-Datei in ein Arraylist mit den Elementen folgender Klasse:
Imports System.Collections.Generic
<Serializable()> _
Public Class TvGuideList
Private m_StartTime As Date
Private m_EndTime As Date
Private m_Title As String
Private m_Channel As String
Private m_Description As String
Private Shared Schedulerini As clsInit = clsInit.Instance
'Properties removed!!
'Public Function CompareTo(ByVal obj As Object) As Integer Implements
' System.IComparable.CompareTo
' Dim cc As Recording = CType(obj, Recording)
' Return DateTime.Compare(Me.StartTime, cc.StartTime)
'End Function
Public Class Comparer
Implements IComparer
Private Shared _sortProperties As _
System.ComponentModel.PropertyDescriptorCollection
Private _sortProperty As System.ComponentModel.PropertyDescriptor
Private _baseProperty As System.ComponentModel.PropertyDescriptor
Private _sortDescending As Boolean
Public Sub New(ByVal sortFieldName As String, ByVal sortDescending As _
Boolean)
If _sortProperties Is Nothing Then
_sortProperties = _
System.ComponentModel.TypeDescriptor.GetProperties(GetType( _
TvGuideList))
End If
_sortProperty = _sortProperties(sortFieldName)
_sortDescending = sortDescending
End Sub
Public Sub New(ByVal sortFieldName As String, ByVal baseFieldName As _
String, ByVal sortDescending As Boolean)
If _sortProperties Is Nothing Then
_sortProperties = _
System.ComponentModel.TypeDescriptor.GetProperties(GetType( _
TvGuideList))
End If
_sortProperty = _sortProperties(sortFieldName)
_baseProperty = _sortProperties(baseFieldName)
_sortDescending = sortDescending
End Sub
Public Function Compare(ByVal obj1 As Object, ByVal obj2 As Object) As _
Integer Implements IComparer.Compare
Dim Wert1 As Object = _sortProperty.GetValue(obj1)
Dim Wert2 As Object = _sortProperty.GetValue(obj2)
Dim res As Integer
If Wert1.GetType.FullName = "System.DateTime" Then
If _baseProperty.GetValue(obj1) = _baseProperty.GetValue(obj2) _
Then
res = DateTime.Compare(Wert1, Wert2)
Else
res = 0
End If
Else
Dim Comp1 As IComparable = CType(_sortProperty.GetValue(obj1), _
IComparable)
res = Comp1.CompareTo(Wert2)
End If
If _sortDescending Then Return -res
Return res
End Function
End Class
End Class Dieses Arraylist wird jetzt einmal nach Kanäle sortiert. Das funktioniert auch noch:
GuideList.Sort(New TvGuideList.Comparer("Channel", False))
Ich weiß aber irgendwie nicht so recht, wie ich dann die Kanäle nach Zeit sortieren kann. Hätte mir das so überlegt:
GuideList.Sort(New TvGuideList.Comparer("StartTime", "Channel", False))
Wie würdet ihr das machen? |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|