2016-09-25 3 views
0

나는 이상한 행동을 취하고 여기에서 어디로 가야할지 모르겠습니다. 디렉토리에서 파일 이름을 읽고 <string> 유형의 일반 목록에 추가하려고합니다.파일 이름을 directoriy에서 일반 목록으로 복사

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 표시 값과 파일 이름. 실제로 사용할 때의 가치를 확인할 수 있습니다.

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); 

     } 

그 방법은 각 개체에 대해 수행 할 함수가 필요합니다. 이를 수행하는 가장 쉬운 방법은 간단한 람다 (lambda)를 사용하는 것입니다.

기본적으로 람다를 사용할 때 익명의 메서드 또는 함수를 만듭니다. Select 방법은 컬렉션의 각 항목에 대해 수행 할 기능이나 작업을 알아야합니다. 이 경우 GetFiles 메서드가 반환하는 컬렉션의 각 항목의 파일 이름을 가져 오려고합니다. 더 많은 설명을 원한다면 알려주세요.

+0

HI Adrian, lambba를 사용했지만 변수 자체에 실제 파일 이름이 들어 있어도 동일한 null 값이 목록에 전달됩니다. 나는 무엇을 시도하고있다 http://stackoverflow.com/questions/3694676/how-do-i-retrieve-all-filenames-in-a-directory –

+0

사실, 나는 배열에 데이터를 삽입하여 주위를 해결하고 그런 다음 해당 배열을 일반 목록에 추가합니다. 그래서 나는 해결책을 가지고있다. 하지만 원래 질문에 호기심이 –

+0

pastebucket에서 작동하는 코드를 넣고 여기에 링크를 보낼 수 있습니까? 나는 왜 그것이 당신을 위해 일하지 않는지에 관해서 궁금합니다. 어떤 문제도 있어서는 안된다. – Adrian

관련 문제