c# - 在根目录的匹配目录中查找选择所有匹配文件的最佳方法
问题描述
想找到一种更好的方法(在可读性、性能或代码长度方面?)来执行以下操作,例如 func<>?任何其他方式都可以。
从代码中可以看出,它试图抓取DatafilePath中的匹配文件,并检查那些具有匹配模式的文件是否存在于_checkFilePath路径中今天日期的所有匹配目录中。
例如,如果我在 datafilePath 中有两个文件 c:\abc\abc_1_2_3_4_12345.csv 和 c:\abc\abc_1_2_3_4_34567.csv,
我想检查这两个文件是否具有匹配模式“12345”和“34567”存在于 c:\def 中的所有目录,例如 c:\def\2019-10-25_123 和 c:\def\2019-10- 25_124。
多谢你们。
files = Directory.GetFiles(DataFilePath, FilePattern);
var archiveDirs = Directory.GetDirectories(_checkFilePath + "archive","*",SearchOption.AllDirectories).Where(x => x.Contains(string.Format("{0:yyyy-MM-dd}", DateTime.Now)));
var filesToProcess = new List<string>();
foreach (var archiveDirStr in archiveDirs)
{
foreach (var file in files)
{
var key = file.Split('_')[5];
var contactFile = Directory.GetFiles(archiveDirStr, "*" + key + "*").FirstOrDefault();
if (contactFile != null)
{
filesToProcess.Add(file);
}
}
}
files = filesToProcess.ToArray();
解决方案
推荐阅读
- php - Laravel:在发送电子邮件之前执行查询
- parsing - 如何在 Prolog 中使用 DCG
- .net - 如何使用 MOQ 模拟 User.Identity?
- java - 不允许将数组初始值设定项作为方法参数传递
- android - 在 Android 中以编程方式创建新的 RelativeLayout
- javascript - 有没有另一种方法将数据推送到js中的数组
- html - 如何使用 flex 平均分配保证金?
- swift - 无论如何不使用 optional 进行条件赋值吗?
- django - 如何反转名称中带有连字符的 URL?
- python-3.x - 如何在python3中平滑一条线?