我有一個父目錄中的目錄列表。這些目錄將以00001,00002,00003 ...的格式創建,因此具有較大尾隨號碼的目錄是最近的一個。在上面的例子中,它是00003.我想以編程方式獲得這個。C#:對目錄名進行排序並選擇最新的目錄名最簡單的方法是什麼?
感謝您的幫助..
我有一個父目錄中的目錄列表。這些目錄將以00001,00002,00003 ...的格式創建,因此具有較大尾隨號碼的目錄是最近的一個。在上面的例子中,它是00003.我想以編程方式獲得這個。C#:對目錄名進行排序並選擇最新的目錄名最簡單的方法是什麼?
感謝您的幫助..
.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);
}
試試這個:
var first = Directory.GetDirectories(@"C:\")
.OrderByDescending(x => x).FirstOrDefault();
顯然與父目錄的路徑替換C:\
。
爲什麼不能做這樣的事情:
string[] directories = Directory.GetDirectories(@"C:\temp");
string lastDirectory = string.Empty;
if (directories.Length > 0)
{
Array.Sort(directories);
lastDirectory = directories[directories.Length - 1];
}
什麼:
var greaterDirectory =
Directory.GetDirectories(@"C:\")
.Select(path => Path.GetFileName(path)) // keeps only directory name
.Max();
或
var simplest = Directory.GetDirectories(@"C:\").Max();
是不是做了兩次工作 - 按升序排序然後再次步行集合以獲得最大值? – JBRWilkinson 2010-01-19 11:15:38
@JBRWilkinson,你是對的,修好了 – 2010-01-19 11:16:54
只需將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++;
}
}
}
建議您發佈的最高尚似乎不夠好主意你寫的代碼... – 2010-01-19 11:04:26
迭代通過他們和跟蹤,除非有,讓他們自動排序的方式,但我懷疑」會更快。哦,你正在尋找最簡單的.. – falstro 2010-01-19 11:05:13