Linq根据文件名C#通过升序从目录中获取文件列表

LikeIfYouCaredAboutMyName

我有一个包含多个文件,一些目录.txt和一些.sql让我们只关注.sql文件。

这些文件包含我需要解析并稍后执行的sql语句,但是这些文件的名称1_ORCA_3_9_56.sql99_ACT_VERSAO.sql其他名称相同,唯一重要的部分是它们启动时所用的编号,它将决定我执行它们所需的顺序。
我使用Linq制作了一个函数,该文件将按升序排列所有文件(实际上是检索它们的全名/路径,这就是我所需要的文件)的列表,从而为我提供了一个列表,但查询返回了0个项目。

这是功能

 public List<string> ListaDeFicheiros(string Directoria)
        {
            Global.Erro = "";
            Global.ErroGrave = false;
            string caminho = "";

            var Paths = new  List<string>();
            Version version = null;
            var lastVersion = new DirectoryInfo(Directoria).EnumerateFiles()
                        .Where(d => d.Name.ToLower().EndsWith(".sql"))
                        .Select(d => new { Directory = d.Directory, Token = d.Name.Split('_') })
                        //.Select(d => new { Directory = d, Token = d.Name.Split('_') })
                        .Where(x => x.Token.Length == 3 && Version.TryParse(x.Token[2], out version))
                        .Select(x => new { Directory = x.Directory, Date = x.Token[1], Version = version })
                        .OrderByDescending(x => x.Version)
                        .Select(x => x.Directory.FullName);
            Paths = lastVersion.ToList();
            return Paths;
        }

任何帮助将不胜感激,任何问题都只能发表评论,我将尽可能详细地回答。

请记住,我只需要获取.sql文件并忽略任何其他扩展名。

雷内·沃格特

我建议Directory.GetFiles()使用枚举“ * .sql”文件。然后,我使用Select并创建一个包含完整路径和已解析版本的匿名类型。

为了解析版本,我使用Path.GetFileName()了不带路径的文件名。如果文件名格式不正确,则将版本设置为-1

然后,我筛选有效版本,按该版本对枚举排序并返回已排序文件名的列表:

List<string> Paths = Directory.GetFiles(Directoria, "*.sql", SearchOption.TopDirectoryOnly).
    Select(f => {
        int version;
        string[] parts = Path.GetFileName(f).Split('_');
        if (parts.Length < 1 || !int.TryParse(parts[0], out version))
            version = -1;
        return new {File = f, Version = version};
    }).
    Where(f => f.Version > -1).
    OrderBy(f => f.Version).
    Select(f => f.File).ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据文件名的子字符串从目录获取文件-C#

来自分类Dev

在c#中获取目录中的文件名(无需获取路径)

来自分类Dev

获取目录路径中的文件名

来自分类Dev

从Bash中的目录获取文件名

来自分类Dev

获取目录中的文件名

来自分类Dev

从文档目录ios通过文件名获取文件路径

来自分类Dev

根据 hdfs 目录中的文件名计算文件数

来自分类Dev

如何将多个目录中的文件名排序为一个顺序且数字升序的数组/列表?

来自分类Dev

PHP:根据包含unix戳的文件名,从10000个文件的目录中仅获取一个文件

来自分类Dev

通过组合数组列表元素过滤目录中的文件名

来自分类Dev

如何根据文件名创建多个目录并在linux中更改文件名?

来自分类Dev

在F#中:如何获取目录中文件名的列表;预期单位有字串

来自分类Dev

通过文件名获取实例在ImageField中的文件

来自分类Dev

如何从C#中的目录获取文件列表

来自分类Dev

从文件名获取目录名

来自分类Dev

根据文件名解构目录结构

来自分类Dev

nginx:目录列表中的长文件名

来自分类Dev

通过文件名掩码获取文件

来自分类Dev

如何获取目录中的所有文件名?

来自分类Dev

如何一一获取目录中的文件名?

来自分类Dev

搜索目录以获取R中的文件名

来自分类Dev

使用批处理脚本在目录中获取文件名

来自分类Dev

在shell脚本中从目录获取文件名

来自分类Dev

使用vim获取目录中的所有文件名

来自分类Dev

C#-从远程目录获取文件名(不带锚)

来自分类Dev

VBA 根据列表中的文件名导入工作表

来自分类Dev

如何获取C#中的文件列表以及目录中每个文件的编号-C#

来自分类Dev

在 C# 中获取文件名和文件类型作为单独的字符串

来自分类Dev

如何根据文件名和计数文件将文件移动到目录中

Related 相关文章

  1. 1

    根据文件名的子字符串从目录获取文件-C#

  2. 2

    在c#中获取目录中的文件名(无需获取路径)

  3. 3

    获取目录路径中的文件名

  4. 4

    从Bash中的目录获取文件名

  5. 5

    获取目录中的文件名

  6. 6

    从文档目录ios通过文件名获取文件路径

  7. 7

    根据 hdfs 目录中的文件名计算文件数

  8. 8

    如何将多个目录中的文件名排序为一个顺序且数字升序的数组/列表?

  9. 9

    PHP:根据包含unix戳的文件名,从10000个文件的目录中仅获取一个文件

  10. 10

    通过组合数组列表元素过滤目录中的文件名

  11. 11

    如何根据文件名创建多个目录并在linux中更改文件名?

  12. 12

    在F#中:如何获取目录中文件名的列表;预期单位有字串

  13. 13

    通过文件名获取实例在ImageField中的文件

  14. 14

    如何从C#中的目录获取文件列表

  15. 15

    从文件名获取目录名

  16. 16

    根据文件名解构目录结构

  17. 17

    nginx:目录列表中的长文件名

  18. 18

    通过文件名掩码获取文件

  19. 19

    如何获取目录中的所有文件名?

  20. 20

    如何一一获取目录中的文件名?

  21. 21

    搜索目录以获取R中的文件名

  22. 22

    使用批处理脚本在目录中获取文件名

  23. 23

    在shell脚本中从目录获取文件名

  24. 24

    使用vim获取目录中的所有文件名

  25. 25

    C#-从远程目录获取文件名(不带锚)

  26. 26

    VBA 根据列表中的文件名导入工作表

  27. 27

    如何获取C#中的文件列表以及目录中每个文件的编号-C#

  28. 28

    在 C# 中获取文件名和文件类型作为单独的字符串

  29. 29

    如何根据文件名和计数文件将文件移动到目录中

热门标签

归档