Toho se dá velmi snadno dosáhnout implementací a použitím rozhraní IComparer(Of T)
Imports System.Collections.Generic
Imports System.IO
Module Module1
Sub Main()
'Načíst seznam souborů ze složky WINDOWS
Dim files() As FileInfo = New DirectoryInfo("C:\WINDOWS").GetFiles()
'Seřadit sestupně podle data vytvoření souboru
Array.Sort(files, New FileCreationTimeComparer(SortOrder.Descending))
End Sub
''' <summary>
''' Porovnává objekty FileInfo podle data vytvoření souboru.
''' </summary>
Class FileCreationTimeComparer
Implements IComparer(Of FileInfo)
Private sortOrder As SortOrder
''' <summary>
''' Vytvoří novou instanci FileCreationTimeComparer a nastaví výchozí vzestupné řazení.
''' </summary>
Public Sub New()
Me.New(Module1.SortOrder.Ascending)
End Sub
''' <summary>
''' Vytvoří novou instanci FileCreationTimeComparer a nastaví požadované řazení.
''' </summary>
''' <param name="sorting">Způsob řazení.</param>
Public Sub New(ByVal sorting As SortOrder)
sortOrder = sorting
End Sub
''' <summary>
''' Porovná objekty FileInfo podle data vytvoření souboru.
''' </summary>
''' <param name="x">Platná instance FileInfo.</param>
''' <param name="y">Platná instance FileInfo.</param>
''' <returns>Vrací -1, 0 nebo 1 v závislosti na nastavení způsobu řazení.</returns>
Public Function Compare(ByVal x As FileInfo, ByVal y As FileInfo) As Integer Implements IComparer(Of FileInfo).Compare
Return x.CreationTime.CompareTo(y.CreationTime) * sortOrder
End Function
End Class
''' <summary>
''' Způsob řazení
''' </summary>
Enum SortOrder
Ascending = 1
Descending = -1
End Enum
End Module
|