2017-06-22 6 views
0

をスキップforeachループに到達すると、ファイルはnullです。
中の文で)foreachの内部では、プログラムがバック=>ステートメントにジャンプし、その後ファイルを埋めます。完了したら、foreachループをスキップし、決してそれを入力しません。GetFilesとEnumerateFilesは、foreachループ

私はここで迷っています。私のコードが1行戻ってくるのはなぜですか?私はEnumerateとGetFilesを試してみましたが、うまくいきません。

+0

たぶん拡張が必要extリストのドット – Slai

+0

それも働いた。助けてくれてありがとう。 –

答えて

0

コード「ジャンプバック」の理由は、Deferred Executionと呼ばれています。あなたがそこにあるLINQ式は、結果がforeachループで使われるまで実際には実行されません。

foreachループをスキップするには、列挙が空であるために起こります。 @Slaiがコメントで述べたように、あなたの拡張子リストに問題があるかもしれません(拡張子名が一般的な間違いである前に '。'を忘れています)。

あなたが列挙は保留されずに、すぐに実行したい場合(デバッグを容易にする)最も簡単な方法は、ちょうど.ToList(とあなたのLINQの式を終了することです)ので、のような:

var files = dir.EnumerateFiles("*.*", SearchOption.AllDirectories) 
    .Where(f => ext.Contains(Path.GetExtension(f.FullName))) 
    .ToList(); 
+0

私はそのDeferred Executionを読む必要があります。それは間違いなくそれを修正した。ありがとうございました。 –