2016-04-18 54 views
0

我有c#代码从文件夹中获取pdf文件。如何从C文件夹中的文件夹过滤日期文件#

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

如何使用此代码通过日期过滤来获取文件。文件格式将是

LondoPage 20160301.pdf 

我需要过滤文件的结尾日期的文件。即如果我通过日期'20160301',应该选择上述文件。

+0

所以,你如果那里有指定日期的GetFiles(.. * .PDF),改变的* .pdf为 “* 20160301.pdf” – BugFinder

+0

@BugFinder。如果有100个文件,我怎么概括它? – Sarat

+0

它仍然说* .pdf它是一般..我不明白你的问题..你有答案都提供给你的方法来做到这一点。把.pdf放在最后总会给你我们的答案 – BugFinder

回答

1

尝试

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

而不是包含,使用EndsWith – hungryMind

+0

谢谢!理解这里实际需要的是什么 –

+0

@AndreyMarchuk是相当棘手的。感谢它的工作。 :-) – Sarat

1

这将让文件名以日期为止您传递的过滤器:

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

随着您将获得特定的属性命令所有文件的命令文件,在这种情况下,我选择了创建日期。

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

希望它能帮助;)

相关问题