首页 > 解决方案 > 在根目录的匹配目录中查找选择所有匹配文件的最佳方法

问题描述

想找到一种更好的方法(在可读性、性能或代码长度方面?)来执行以下操作,例如 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();

标签: c#

解决方案


推荐阅读