2016-04-18 13 views
0

フォルダからpdfファイルを取得するためのC#コードがあります。C#のフォルダから日付を含むファイルをフィルタする方法

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

このコードを使用して日付でフィルタリングする方法を教えてください。ファイル形式は

LondoPage 20160301.pdf 

となります。ファイル名の末尾に日付を含むファイルをフィルタリングする必要があります。つまり、「20160301」という日付を渡すと、上記のファイルが選択されます。

+0

ので、あなたは* .PDFに "* 20160301.pdf" – BugFinder

+0

@BugFinderを変更、getfiles(.. * .PDF)を持っています。もし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")); 

をソリューションを提案します。

フィルタリングされたファイルを使用すると、条件を満たす1つ以上のファイルのコレクションが届きます。あなたの基準がより正確であれば、得られる結果は少なくなります。

ことができますことを願っています。指定されたtheresの日付場合)

関連する問題