C# 按目录路径的顺序获取文件

C# 按目录路径的顺序获取文件,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在尝试从下面的目录中选择文件,这是文件的格式 14094901-1_SCAN_f568aecd-5f5a-424d-bb54-b2a7ee60ca9e 14094901-2_SCAN_90b3ddf3-17f9-417d-b64d-61a175a779a3 但当文件大小达到10时,比如先选择文件后的10,它会显示第一个文件,然后跳到10。下面的代码很有趣,我不知道它为什么这样做 string path1 = @"C:\Users\test\AppData\Local\Temp\XXXXX"

我正在尝试从下面的目录中选择文件,这是文件的格式

14094901-1_SCAN_f568aecd-5f5a-424d-bb54-b2a7ee60ca9e
14094901-2_SCAN_90b3ddf3-17f9-417d-b64d-61a175a779a3
但当文件大小达到10时,比如先选择文件后的10,它会显示第一个文件,然后跳到10。下面的代码很有趣,我不知道它为什么这样做

string path1 = @"C:\Users\test\AppData\Local\Temp\XXXXX";
                var paths = Directory.GetFiles(path1)
            .OrderBy(path =>
                Convert.ToInt32(
                    String.Concat(
                        path.Split('-', '.')
                            .Skip(3)
                            .Take(1)
                            //.Select(num => num.PadLeft(2, '0'))
                            .ToArray())
                )
            );
请让我知道如何以正确的顺序获取文件1,2,3,4,5,6,7,8,9,10
但是在获取1,10,2,3,4,5,6,7,8,9之前,请先将第二个分割值转换为int

 string path1 = @"C:\Users\test\AppData\Local\Temp\XXXXX";
        var files = Directory.GetFiles(path1);
        var orderedFiles = files.OrderBy(file => Convert.ToInt32(file.Split(new []{'-', '_'})[1]));
var orderedFiles =  Directory.GetFiles(path1).OrderBy(path =>
               Convert.ToInt32(
                String.Concat(
                    path.Split('_','-')
                        .Skip(1).Take(1)
                       .ToArray())
            )

            );
这可能会有帮助

        string path1 = @"C:\Users\test\AppData\Local\Temp\XXXXX"
        var files = Directory.GetFiles(path1);
        var fileIndex = files.Select(a => new {Name = a, Index = Convert.ToInt32(a.Split(new[] {'-', '_'})[1])});
        var orderdFileNames = fileIndex.OrderBy(a => a.Index).Select(a => a.Name);
请试试这个

 string path1 = @"C:\Users\test\AppData\Local\Temp\XXXXX";
        var files = Directory.GetFiles(path1);
        var orderedFiles = files.OrderBy(file => Convert.ToInt32(file.Split(new []{'-', '_'})[1]));
var orderedFiles =  Directory.GetFiles(path1).OrderBy(path =>
               Convert.ToInt32(
                String.Concat(
                    path.Split('_','-')
                        .Skip(1).Take(1)
                       .ToArray())
            )

            );

这可能会帮助您:此代码将无法工作,因为itok中存在转换Convert.ToInt32如果我的理解错误,我不明白为什么他们只是拒绝投票。这是一个有效的问题。请阅读参数以拒绝投票一个问题不明白您的意思。请在这里写下语法,您在看文件还是订购文件?它在我的测试应用程序中运行。我正在查看我在问题中提到的顺序