2016-09-25 1 views
0

私は奇妙な動作をしています。私はディレクトリからファイル名を読み込み、タイプ<string>のジェネリックリストに追加しようとしています。ファイル名をdirectoriyからgenericリストにコピーします。

string path = @"C:\mydir\"; 

foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName)) 
{ 
    GenericList1.Add(s); 

} 

私はエラーを取得する:

Object reference not set to an instance of an object.

Iデバッグは、私は変数が値としてファイル名が表示さsことを見る時。私が使用している場合Infactは私が値を見ることができます:

foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName)) 
{ 
    System.Windows.Forms.MessageBox.Show(s);   
} 

誰もが私がここに間違っている可能性のある洞察力を持っていますか?

答えて

0
foreach (string s in Directory.GetFiles(path, "*.bak").Select(p => Path.GetFileName(p))) 
     { 
      GenericList1.Add(s); 

     } 

この方法では、各オブジェクトに対して実行する機能が必要です。これを行う最も簡単な方法は、簡単なラムダを使うことです。

ラムダを使用する場合、基本的に匿名のメソッドまたは関数を作成しています。 Selectメソッドは、コレクションの各項目でどのような機能やアクションを実行するかを知る必要があります。この場合、GetFilesメソッドによって返されるコレクション内の各アイテムのファイル名を取得する必要があります。説明がもっと必要な場合は私に知らせてください。

+0

HI Adrian、lambbaを使用しましたが、変数自体に実際のファイル名が含まれていても、同じnull値がリストに渡されます。私はhttp://stackoverflow.com/questions/3694676/how-do-i-retrieve-all-filenames-in-a-directoryの下で提案されたものを試しています –

+0

実際には、データを配列に挿入することで回避しました。その配列をGeneric Listに追加します。だから私は解決策を持っています。しかし、オリジナルの質問については興味があります –

+0

pastebucketで作業しているコードを置いて、私にここのリンクを送ってもらえますか?なぜそれがあなたのために働いていないのか不思議です。問題はありません。 – Adrian

関連する問題