c# - 使用自然顺序从文件夹加载文件

标签 c#

在一个文件夹中,我有这些文件。 Windows 资源管理器上的顺序是:

  • 输入(1).jpg
  • 输入(2).jpg
  • 输入(101).jpg

这是我从文件夹中获取文件的方式:

var files = Directory.GetFiles(inputImage, "*.*", SearchOption.TopDirectoryOnly);

但是顺序是:

  • 输入(1).jpg
  • 输入(101).jpg
  • 输入(2).jpg

我什至尝试过:Array.Sort(files);

但是顺序是一样的,我怎样才能按这个顺序加载文件:

  • 输入(1).jpg
  • 输入(2).jpg
  • 输入(101).jpg

最佳答案

好吧,我会尝试这样的事情:

        var files = from file in directoryInfo.EnumerateFiles()
        .Where(f => f.Extension == ".jpg")
                    orderby ExtractNumber(file.Name) ascending
                    select file.FullName;
        return files.ToList<string>();

这里我们提取文件编号 - 在 ( 和 )- 之间。

private static object ExtractNumber(string p)
{
    int lenght = p.IndexOf(')') - p.IndexOf('(');
    return int.Parse(p.Substring(p.IndexOf('('), lenght - 1)); 
}

我很确定一定有一种有效的方法可以做到这一点,但只是我的两分钱。

关于c# - 使用自然顺序从文件夹加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085434/

相关文章:

c# - 如何在 MVVM 中的不同 View 之间同步(模型)数据

c# - 是否可以在 XSL 中展平 XML 层次结构?

c# 如何通过网页 (Safari) 在 iPAD 或 iPhone 上访问网络摄像头和麦克风

c# - 在对 PowerShell 脚本的 AfterBuild 调用中引用自定义 msbuild 参数

c# - 将 MemoryStream 复制到 FileStream 并保存文件?

c# - 如何在ConfigureServices之外配置IdentityOptions?

c# - 从 .net core 2.0 中动态加载的程序集调试代码

c# - 我应该在 C# 中使用 uint 来表示不能为负的值吗?

c# - 在树层次结构中具有深度限制的通用深度克隆

c# - 获取成员拦截的属性值