0

" .vcproj; .csproj;*.sln"のような文字列があり、ディレクトリ内のこれらのタイプのすべてのファイルを表示したいとします... Windows は常にファイルを開くダイアログでこれを行います。

私は知ってDirectory.GetFilesいますが、特定の検索パターンしか実行できないため、入力を分割してからそれぞれをループする必要があります。

すべてのファイルを開くダイアログがそれを行った後、これを行うための組み込み機能はありませんか?

.NET 2 なので、LINQ の賢さは使えません!

4

2 に答える 2

5

この方法を試してください:

string[] formats = {".jpg", ".png", ".txt"};
var files = Directory.GetFiles("C:\\");
var neededFiles = files.
    Where(file => formats.Any(file.EndsWith)).
    ToArray();

または、.NET 2.0 の場合:

var desiredFiles = new List<string>(files.Length);
foreach (var file in files)
{
    foreach (var format in formats)
        if (file.EndsWith(format))
        {
            desiredFiles.Add(file);
            break;
        }
}
于 2013-01-11T15:11:14.423 に答える
0

垂直パイプ「|」を使用できます 正規表現代替の場合。最終的なコードは次のようになるはずです。

string input_files = ".vcproj;.csproj;*.sln";
string search_for = input_files.Replace(".","\.").Replace(";","|")

Directory.GetFiles("/path/to/directory",search_for)

.NET でコーディングしたことがないので、構文が間違っていたら申し訳ありません。検索用語の最初の文字列が有効な正規表現形式で始まる場合、明らかに時間を節約できます。

于 2013-01-11T15:27:33.687 に答える