C #: какой самый простой способ сортировать имена каталогов и выбрать самый последний? - PullRequest
7 голосов
/ 19 января 2010

У меня есть список каталогов в родительском каталоге.Эти каталоги будут созданы в формате, таком как 00001, 00002, 00003 ... так, чтобы последний с большим последним номером был последним.в приведенном выше примере это 00003. Я хочу получить это программно.

спасибо за любую помощь ..

Ответы [ 5 ]

8 голосов
/ 19 января 2010

Попробуйте это:

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

Очевидно, замените C:\ на путь родительского каталога.

3 голосов
/ 19 января 2010

.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);
    }
3 голосов
/ 19 января 2010

Почему бы не сделать что-то вроде этого:

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

if (directories.Length > 0)
{
    Array.Sort(directories);
    lastDirectory = directories[directories.Length - 1];
}
1 голос
/ 10 января 2013

Просто сгенерируйте выходные данные GetDirectories или GetFiles в функции пузырьковой сортировки.

    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++;
            }
        }
    }
1 голос
/ 19 января 2010

А как же:

var greaterDirectory =
    Directory.GetDirectories(@"C:\")
        .Select(path => Path.GetFileName(path)) // keeps only directory name
        .Max();

или

var simplest = Directory.GetDirectories(@"C:\").Max();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...