我有一个包含两个文件的文件夹:
此外,第三方应用程序处理文件如下:
folderPath和asearchPatternDirectory.GetFiles(folderPath, searchPattern),处理与批量过滤器匹配的任何文件,然后将文件移动到存档文件夹.事实证明,我必须将我的两个文件移动到不同的存档文件夹中,因此我需要通过提供不同的searchPatterns来单独选择它们来单独处理它们.请注意,我无法修改第三方应用程序,但我可以修改数据库中的searchPattern和文件目标.
什么searchPattern允许我选择Awesome.File.20091031_123002.txt不包括Awesome.File.Summary.20091031_123152.txt?
如果你打算使用LINQ那么......
var regexTest = new Func<string, bool>(i => Regex.IsMatch(i, @"Awesome.File.(Summary)?.[\d]+_[\d]+.txt", RegexOptions.Compiled | RegexOptions.IgnoreCase));
var files = Directory.GetFiles(@"c:\path\to\folder").Where(regexTest);
Run Code Online (Sandbox Code Playgroud)
我想在这里尝试我微薄的linq技能......我确信有一个更优雅的解决方案,但这是我的:
string pattern = ".SUMMARY.";
string[] awesomeFiles = System.IO.Directory.GetFiles("path\\to\\awesomefiles");
IEnumerable<string> sum_files = from file in awesomeFiles
where file.ToUpper().Contains(pattern)
select file;
IEnumerable<string> other_files = from file in awesomeFiles
where !file.ToUpper().Contains(pattern)
select file;
Run Code Online (Sandbox Code Playgroud)
这假设目录中除了两个文件之外没有任何其他文件,但您可以在此处调整模式以满足您的需要(即将"Awesome.File"添加到模式开始.)
当你迭代每个集合时,你应该得到你需要的东西.