7 Stimmen

C#: Wie kann man die Verzeichnisnamen auf einfachste Weise sortieren und den neuesten auswählen?

Ich habe eine Liste von Verzeichnissen in einem übergeordneten Verzeichnis. Diese Verzeichnisse werden in einem Format wie 00001, 00002, 00003... erstellt, sodass dasjenige mit der größeren Endnummer das neueste ist. In obigem Beispiel ist es 00003. Ich möchte dies programmgesteuert erhalten.

Vielen Dank für jede Hilfe.

8voto

RichardOD Punkte 28349

Versuchen Sie dies:

var first = Directory.GetDirectories(@"C:\")
   .OrderByDescending(x => x).FirstOrDefault();

Ersetzen Sie natürlich C:\ durch den Pfad des übergeordneten Verzeichnisses.

3voto

Wim Haanstra Punkte 5830

Warum nicht etwas wie das hier tun:

string[] directories = Directory.GetDirectories(@"C:\temp");
string lastDirectory = string.Empty;

if (directories.Length > 0)
{
    Array.Sort(directories);
    lastDirectory = directories[directories.Length - 1];
}

3voto

serhio Punkte 27312

.NET 2:

    private void button1_Click(object sender, EventArgs e) {
        DirectoryInfo di = new DirectoryInfo(@"C:\Windows");
        DirectoryInfo[] dirs = di.GetDirectories("*", 
            SearchOption.TopDirectoryOnly);

        Array.Sort<DirectoryInfo>(dirs, 
            new Comparison<DirectoryInfo>(CompareDirs);
    }

    int CompareDirs(DirectoryInfo a, DirectoryInfo b) {
        return a.CreationTime.CompareTo(b.CreationTime);
    }

1voto

Rubens Farias Punkte 55555

Was ist mit:

var greaterDirectory =
    Directory.GetDirectories(@"C:\")
        .Select(path => Path.GetFileName(path)) // behält nur den Verzeichnisnamen
        .Max();

oder

var simplest = Directory.GetDirectories(@"C:\").Max();

1voto

Chuck Fecteau Punkte 101

Werfen Sie einfach die Ausgabe von GetDirectories oder GetFiles in eine Bubblesort-Funktion.

private void SortFiles(FileSystemInfo[] oFiles)
{
    FileSystemInfo oFileInfo = null;

    int i = 0;
    while (i + 1 < oFiles.Length)
    {
        if (string.Compare(oFiles[i].Name, oFiles[i + 1].Name) > 0)
        {
            oFileInfo = oFiles[i];
            oFiles[i] = oFiles[i + 1];
            oFiles[i + 1] = oFileInfo;
            if (i > 0)
            {
                i--;
            }
        }
        else
        {
            i++;
        }
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X