如何使用C#中的文件夹过滤带日期的文件

时间:2016-04-18 12:08:53

标签: c# linq

我有c#代码从文件夹中获取pdf文件。

string[] pdfFiles = Directory.GetFiles(EnvSettingsTools.FilePath.ToString(), "*.pdf")
                                 .Select(path => Path.GetFileNameWithoutExtension(path))
                                 .ToArray();

如何使用此代码按日期过滤来获取文件。文件格式为

LondoPage 20160301.pdf

我需要使用文件名末尾的日期过滤文件。即,如果我通过日期' 20160301'提到的文件应该选择。

3 个答案:

答案 0 :(得分:1)

尝试

var date = "20160301";
string[] pdfFiles = Directory.GetFiles(EnvSettingsTools.FilePath.ToString(), "*.pdf")
                             .Select(path => Path.GetFileNameWithoutExtension(path))
                             .Where(f => f.EndsWith(date))
                             .ToArray();

答案 1 :(得分:1)

这将获得名称以您为筛选器传递的日期结束的文件:

var date = "20160301"; 
string[] pdfFiles = Directory.GetFiles(EnvSettingsTools.FilePath.ToString(), "*.pdf")
                                     .Select(Path.GetFileNameWithoutExtension)
                                     .Where(f => f.EndsWith(date))
                                     .ToArray();

答案 2 :(得分:0)

我不太了解你想要的结果,但我会做一个有根据的猜测,你需要能够订购或过滤文件夹内容。这可以通过多种方式实现。我会提出解决问题的方法

     if (!Directory.Exists(pathToFiles)) return;

     DirectoryInfo di = new DirectoryInfo(pathToFiles);
     FileSystemInfo[] files = di.GetFileSystemInfos();
     var orderedFiles = files.OrderBy(f => f.CreationTime);

     var filteredFileByDate = orderedFiles.Where(f => f.FullName.ToLowerInvariant().Split('/').Last().Contains("filterText"));

使用有序文件,您将收到特定属性订购的所有文件,在这种情况下,我选择了创建日期。

使用过滤后的文件,您将收到一个或多个符合您标准的文件的集合。您的标准越精确,您获得的结果就越少。

希望它有所帮助;)