C# 对目录文件进行排序并获取最高文件名

C# 对目录文件进行排序并获取最高文件名,c#,wpf,file,sorting,C#,Wpf,File,Sorting,我有一个包含40个文件的目录,文件名从0到39(例如), 我正在尝试获取名称中数字最大的文件(这意味着我需要获取“39”) 我正在对目录进行排序。。 我已尝试使用以下主题: 没有什么适合我的。。 我尝试了每种方法——使用Linq和其他方法。。 我不知道为什么 我得到以下排序结果(检查下图): 谢谢你的帮助 Din Bracha.按照这种方式排序是合乎逻辑的,您可以引入一些语义来按数字排序,即将所有文件名解析为数字,然后按数字排序文件 差不多 files.OrderBy(path =>

我有一个包含40个文件的目录,文件名从0到39(例如), 我正在尝试获取名称中数字最大的文件(这意味着我需要获取“39”) 我正在对目录进行排序。。 我已尝试使用以下主题:

没有什么适合我的。。 我尝试了每种方法——使用Linq和其他方法。。 我不知道为什么

我得到以下排序结果(检查下图):

谢谢你的帮助


Din Bracha.

按照这种方式排序是合乎逻辑的,您可以引入一些语义来按数字排序,即将所有文件名解析为数字,然后按数字排序文件

差不多

files.OrderBy(path => Int32.Parse(Path.GetFileNameWithoutExtension(path)))

使用
Last()
获取编号最高的文件。

这是VB.NET检索编号最高的名称。将OrderByDescending键更改为x.LastWriteTime将获取最新文件

    Dim OldName As String = String.Empty
    Dim DI As New IO.DirectoryInfo("C:\")
    For Each FI As IO.FileInfo In DI.GetFiles("*.*").OrderByDescending(Function(x) x.Name)
        OldName = FI.FullName
        Exit For
    Next

windows中有一个本机函数,它将字符串中的数字作为数字而不是字母进行比较。制作一个调用该函数并使用它进行比较的比较器很容易

public class StrCmpLogicalComparer : Comparer<string>
{
    [DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
    private static extern int StrCmpLogicalW(string x, string y);

    public override int Compare(string x, string y)
    {
        return StrCmpLogicalW(x, y);
    }
}
哪个输出

Example1.txt
Example10.txt
Example11.txt
Example12.txt
Example13.txt
Example14.txt
Example15.txt
Example16.txt
Example17.txt
Example18.txt
Example19.txt
Example2.txt
Example20.txt
Example3.txt
Example4.txt
Example5.txt
Example6.txt
Example7.txt
Example8.txt
Example9.txt

Example1.txt
Example2.txt
Example3.txt
Example4.txt
Example5.txt
Example6.txt
Example7.txt
Example8.txt
Example9.txt
Example10.txt
Example11.txt
Example12.txt
Example13.txt
Example14.txt
Example15.txt
Example16.txt
Example17.txt
Example18.txt
Example19.txt
Example20.txt

或者
TryParse()
,在不引发异常的情况下处理任何异常。@HABO:如果在每个文件的基础上进行错误处理是合理的话,可能会这样做。@H.B.TryParse会更快,因为可以避免使用try-catch块,如果存在无效文件,则会更快。
Example1.txt
Example10.txt
Example11.txt
Example12.txt
Example13.txt
Example14.txt
Example15.txt
Example16.txt
Example17.txt
Example18.txt
Example19.txt
Example2.txt
Example20.txt
Example3.txt
Example4.txt
Example5.txt
Example6.txt
Example7.txt
Example8.txt
Example9.txt

Example1.txt
Example2.txt
Example3.txt
Example4.txt
Example5.txt
Example6.txt
Example7.txt
Example8.txt
Example9.txt
Example10.txt
Example11.txt
Example12.txt
Example13.txt
Example14.txt
Example15.txt
Example16.txt
Example17.txt
Example18.txt
Example19.txt
Example20.txt