如何对FileInfo []数组进行排序

JL.*_*JL. 20 .net c# .net-2.0

我有以下代码

DirectoryInfo taskDirectory = new DirectoryInfo(this.taskDirectoryPath);
FileInfo[] taskFiles = taskDirectory.GetFiles("*" + blah + "*.xml");
Run Code Online (Sandbox Code Playgroud)

我想按文件名对列表进行排序.

如何使用.net v2尽可能快速,轻松地完成此操作.

Jon*_*eet 39

调用Array.Sort,传入比较委托:

Array.Sort(taskFiles, delegate(FileInfo f1, FileInfo f2) {
    return f1.Name.CompareTo(f2.Name);
});
Run Code Online (Sandbox Code Playgroud)

在C#3中,这变得稍微简单一些:

Array.Sort(taskFiles, (f1, f2) => f1.Name.CompareTo(f2.Name));
Run Code Online (Sandbox Code Playgroud)

或者,StringComparer如果要使用不区分大小写的排序顺序,则可以使用a :

Array.Sort(taskFiles,
           (x, y) => StringComparer.OrdinalIgnoreCase.Compare(x.Name, y.Name));
Run Code Online (Sandbox Code Playgroud)

(或使用string.Compare(x.Name, y.Name, true),或任何其他比较字符串的方式:)

  • @Thomas - 但这不会进行就地排序,这是(我相信)OP想要的 (2认同)

Mar*_*ell 9

Array.Sort(taskFiles, delegate (FileInfo x, FileInfo y) {
    return string.Compare(x.Name,y.Name);
});
Run Code Online (Sandbox Code Playgroud)