vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Zweistufiges 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?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zweistufiges Sortieren einer Arraylist1.034STSC24.05.06 19:04
Re: Zweistufiges Sortieren einer Arraylist647ModeratorDaveS24.05.06 19:49
Re: Zweistufiges Sortieren einer Arraylist729STSC24.05.06 20:06

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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