2016-12-12 4 views
-3

ディレクトリ内に2つの最新のファイルを見つける必要があります。私はあまりにも二つのファイルを見つけることができる方法を知っていただきたいと思いディレクトリ内の2つの最新ファイルを検索するにはどうすればよいですか?

var directory = new DirectoryInfo("f:\\PAB\\bil_prev_ent"); 
var firstfile = (from f in directory.GetFiles("*.pdf") 
       orderby f.LastWriteTime descending 
       select f).First(); 

は、私が最初に使用してこのコードを見つけることができます。代わりにFirst()

var myfiles = (from f in directory.GetFiles("*.pdf") 
       orderby f.LastWriteTime descending 
       select f).Take(2); 

+4

'First()'ではなく '.Take(2)'ですか? –

+0

@DmitryBychenkoごめんなさい、あなたのコメントを参照してください – Sajeetharan

+0

@Sajeetharan:それは問題ありません。 (おそらく、 '.ToArray()')の答えに言及すべきであろう(「2番目のファイルをどうやって見つけることができるか」 - myfiles [1] ')。 –

答えて

5

クエリを作成し、必要なものを選択します。fo Rの例:それはメモリにすべてのファイルをロードする必要はありませんので、私はEnumerateFilesを使用している

var orderedFiles = directory.EnumerateFiles("*.pdf") 
    .OrderByDescending(f => f.LastWriteTime); 

var newestTwo = orderedFiles.Take(2).ToList(); 

+0

これには欠陥があります。上記の私のコメントを参照してください。 – Bauss

+0

@Bauss:彼は 'LastWriteTime'(最後に変更されたファイル)に従って最後の2つを望んでいる場合、OPは自分が望むファイルを知っています。私はこれがどのように問題に関連しているのか全く分かりません。 –

+0

これは魅力のように機能しますが、私はToArrayを好きなように使っています – Roberto

6

使用Take(n)上記CreationTime

var myfiles = (from f in directory.GetFiles("*.pdf") 
          orderby f.CreationTime descending 
          select f).Take(2); 
を使用し、あなたが最近作成されたファイルが必要な場合は、最近

変更されたファイルを提供します

+0

これには欠陥があります。最後に修正されたファイルが2つしか見つかりません。 – Bauss

+0

@Bauss yes modified – Sajeetharan

0

必要なロジックは「CreationTime」です。 ソリューション番号3は魅力的ですが、私はToArrayを使用しました。

だから、右のコードは次のとおりです。

var directory = new DirectoryInfo("f:\\PAB\\bil_prev_ent"); 
var orderedFiles = directory.EnumerateFiles("*.pdf").OrderByDescending(f => f.CreationTime); 
var newestTwo = orderedFiles.Take(2).ToArray(); 
0

回答2:

今のファイルが完全なパスなしです。

どのように私は完全なパスを持つことができますか?

関連する問題