【问题标题】:How do I sort the filenames read with Directoryinfo如何对使用 Directoryinfo 读取的文件名进行排序
【发布时间】:2014-02-25 14:53:36
【问题描述】:

我想读取放入一个排序显示的列表中的文件夹和文件名 例如我有一个看起来像这样的文件:

1-4999.txt

5000-9999.txt ……

我要对数据文件夹进行排序

       var endpageNext = pagenumber * 100;
        var startpageNext = endpageNext - (100 - 1);

        var lst = GetFile(startpageNext, endpageNext);

Picture Data Folder

Picture Visual Studio break point

        internal List<string> GetFile(int startpagenext, int endpagenext)
    {
        var dir = DataAccessSetting.CustomerSplit;
        DirectoryInfo directoryInfo = new DirectoryInfo(dir);
        var s = directoryInfo.GetFiles("*.txt");
        var lstfilename = new List<string>();
        foreach (var file in s)
        {
            var fileWithoutExtension = Path.GetFileNameWithoutExtension(file.Name);
            var splitNameFile = fileWithoutExtension.Split('-');

            if ((startpagenext >= int.Parse(splitNameFile[0]) && startpagenext <= int.Parse(splitNameFile[1])) || (endpagenext >= int.Parse(splitNameFile[0]) && endpagenext <= int.Parse(splitNameFile[1])))
            {
                var ppath = dir + fileWithoutExtension + ".txt";
                lstfilename.Add(ppath);
            }

        }

        return lstfilename;
    }

【问题讨论】:

  • 这个方法怎么调用,带什么参数?参数startpagenext和endpagenext有什么用?
  • 我找到了根据用户数计算的两个变量的公式我,编辑问题

标签: c# sorting directoryinfo


【解决方案1】:

这应该可行:

List<string> lstfilename = System.IO.Directory
    .EnumerateFiles(dir, "*.txt", System.IO.SearchOption.TopDirectoryOnly)
    .Select(Path => new { 
        Path, 
        split = System.IO.Path.GetFileNameWithoutExtension(Path).Split('-')
    })
    .Where(x => x.split.Length == 2 && x.split.All(s => s.All(Char.IsDigit)))
    .Select(x => new { 
        x.Path, 
        Num1 = int.Parse(x.split[0]),
        Num2 = int.Parse(x.split[1]),
    })
    .Where(x => (startpagenext >= x.Num1 && startpagenext <= x.Num2) 
             || (endpagenext   >= x.Num1 && endpagenext   <= x.Num2))
    .OrderBy(x => x.Num1).ThenBy(x => x.Num2)
    .Select(x => x.Path)
    .ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2017-03-04
    • 2016-03-10
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多