假设我有一个像“ .vcproj; .csproj; * .sln”这样的字符串,我想在目录中显示这些类型的所有文件... Windows一直这样做打开文件对话框。
我知道Directory.GetFiles
但它只允许我运行一个给定的搜索模式,所以我必须拆分我的输入,然后遍历每个。
在所有打开文件对话框完成后,是否没有内置功能来执行此操作?
.NET 2所以没有LINQ聪明可用!
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
你可以使用垂直管道'|'为RegEx Alternation。我认为您的最终代码应该类似于:
string input_files = ".vcproj;.csproj;*.sln";
string search_for = input_files.Replace(".","\.").Replace(";","|")
Directory.GetFiles("/path/to/directory",search_for)
我从未在.NET中进行任何编码,所以如果我的语法关闭,我会道歉。如果您的初始搜索字符串以有效的正则表达式形式开始,显然可以节省一些时间。