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ファイルを取得し、他の拡張子を無視する必要があることを覚えておいてください。

ルネvogt

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

ディレクトリ名に基づいてファイルの名前を変更します

分類Dev

Bashの親ディレクトリに基づいてファイルの名前を変更します

分類Dev

現在の作業ディレクトリに基づいてファイルパスを取得しますか?

分類Dev

部分的な名前に基づいてディレクトリ内のファイルを削除します

分類Dev

ディレクトリから作成日に基づいてファイルを取得しながら、特定のファイル拡張子を取得します

分類Dev

テキストファイルの名前に基づいてファイルを新しいディレクトリにシンボリックリンクするにはどうすればよいですか?

分類Dev

含まれているテキストに基づいて、ディレクトリ内のすべてのファイルの名前を変更します

分類Dev

PHP:UNIXスタンプを含むファイル名に基づいて10000ファイルのディレクトリから1つのファイルのみを取得します

分類Dev

ファイル名のバージョンに基づいてディレクトリからファイルを削除します

分類Dev

2つのリストに基づいて、ファイルをサブディレクトリから別のサブディレクトリにコピーして名前を変更しますか?

分類Dev

.zipファイルのリストをそれぞれ1つの新しいディレクトリに抽出します。ディレクトリ名はzipファイルの名前から取得します。

分類Dev

名前の一部としていくつかの値に基づいてディレクトリとファイルを動的に作成します

分類Dev

元のディレクトリの変更に基づいて、コピーしたディレクトリ内のファイルとサブディレクトリの名前を変更するにはどうすればよいですか?

分類Dev

Rを使用してファイル名に基づいてディレクトリ内のファイルの名前を変更する

分類Dev

ファイル名の部分文字列に基づいてディレクトリを作成し、ファイルをそれらに移動します

分類Dev

ファイル名のテキストに基づいて、指定したディレクトリにファイルを移動します

分類Dev

テキストファイルの名前に基づいてファイルを新しいディレクトリに移動するにはどうすればよいですか?

分類Dev

ディレクトリ名に基づいてファイルの名前を変更する

分類Dev

シェルスクリプトを作成してディレクトリを再帰的にスキャンし、名前パターンに基づいて特定のファイルをGitに追加するにはどうすればよいですか?

分類Dev

テキストファイル内の文字列に基づく動的な名前でファイルが同じディレクトリに存在するかどうかを確認していますか?

分類Dev

現在開いているファイルの名前/ディレクトリに基づいてファイルを開きます

分類Dev

Unixはファイル名に基づいてディレクトリを作成し、ファイルをディレクトリに移動します

分類Dev

Macでの作成時間に基づいてディレクトリ内のファイルのリストの名前を変更する方法

分類Dev

ディレクトリ内のファイルをループします-名前をファイルに保存してから名前を変更します

分類Dev

テキストファイルのリストに基づいて一連のディレクトリからファイルをコピーする

分類Dev

サブディレクトリ名に基づいて特定のサブディレクトリから単一のディレクトリにファイルをコピーし、名前を変更する

分類Dev

ディレクトリからファイルを取得し、vbaの名前で分離します

分類Dev

C#のディレクトリ(パスを取得せずに)でファイル名を取得するには

分類Dev

別のディレクトリにあるファイルの名前に基づいて、ディレクトリ内のファイルの名前を変更します

Related 関連記事

  1. 1

    ディレクトリ名に基づいてファイルの名前を変更します

  2. 2

    Bashの親ディレクトリに基づいてファイルの名前を変更します

  3. 3

    現在の作業ディレクトリに基づいてファイルパスを取得しますか?

  4. 4

    部分的な名前に基づいてディレクトリ内のファイルを削除します

  5. 5

    ディレクトリから作成日に基づいてファイルを取得しながら、特定のファイル拡張子を取得します

  6. 6

    テキストファイルの名前に基づいてファイルを新しいディレクトリにシンボリックリンクするにはどうすればよいですか?

  7. 7

    含まれているテキストに基づいて、ディレクトリ内のすべてのファイルの名前を変更します

  8. 8

    PHP:UNIXスタンプを含むファイル名に基づいて10000ファイルのディレクトリから1つのファイルのみを取得します

  9. 9

    ファイル名のバージョンに基づいてディレクトリからファイルを削除します

  10. 10

    2つのリストに基づいて、ファイルをサブディレクトリから別のサブディレクトリにコピーして名前を変更しますか?

  11. 11

    .zipファイルのリストをそれぞれ1つの新しいディレクトリに抽出します。ディレクトリ名はzipファイルの名前から取得します。

  12. 12

    名前の一部としていくつかの値に基づいてディレクトリとファイルを動的に作成します

  13. 13

    元のディレクトリの変更に基づいて、コピーしたディレクトリ内のファイルとサブディレクトリの名前を変更するにはどうすればよいですか?

  14. 14

    Rを使用してファイル名に基づいてディレクトリ内のファイルの名前を変更する

  15. 15

    ファイル名の部分文字列に基づいてディレクトリを作成し、ファイルをそれらに移動します

  16. 16

    ファイル名のテキストに基づいて、指定したディレクトリにファイルを移動します

  17. 17

    テキストファイルの名前に基づいてファイルを新しいディレクトリに移動するにはどうすればよいですか?

  18. 18

    ディレクトリ名に基づいてファイルの名前を変更する

  19. 19

    シェルスクリプトを作成してディレクトリを再帰的にスキャンし、名前パターンに基づいて特定のファイルをGitに追加するにはどうすればよいですか?

  20. 20

    テキストファイル内の文字列に基づく動的な名前でファイルが同じディレクトリに存在するかどうかを確認していますか?

  21. 21

    現在開いているファイルの名前/ディレクトリに基づいてファイルを開きます

  22. 22

    Unixはファイル名に基づいてディレクトリを作成し、ファイルをディレクトリに移動します

  23. 23

    Macでの作成時間に基づいてディレクトリ内のファイルのリストの名前を変更する方法

  24. 24

    ディレクトリ内のファイルをループします-名前をファイルに保存してから名前を変更します

  25. 25

    テキストファイルのリストに基づいて一連のディレクトリからファイルをコピーする

  26. 26

    サブディレクトリ名に基づいて特定のサブディレクトリから単一のディレクトリにファイルをコピーし、名前を変更する

  27. 27

    ディレクトリからファイルを取得し、vbaの名前で分離します

  28. 28

    C#のディレクトリ(パスを取得せずに)でファイル名を取得するには

  29. 29

    別のディレクトリにあるファイルの名前に基づいて、ディレクトリ内のファイルの名前を変更します

ホットタグ

アーカイブ