Seřazení položek v poli s objekty FileInfo   zodpovězená otázka

VB.NET

Zdravím, mám pole s objekty FileInfo a potřeboval bych ho seřadit sestupně podle datumu souboru.

Dim mySoubory As FileInfo() = myAdresar.GetFiles()

Díky za případné rady.

Petr Š.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

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

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky - funguje to. Na array.sort jsem také narazil, ale nevěděl jsem jak ji konkrétně použít na můj případ.

Petr Š.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback