2010-12-29 5 views
2

Directory.GetDirectories 메서드를 사용하여 일부 제외 항목이있는 모든 디렉토리를 가져오고 싶습니다. 특히 그 안에 하이픈이있는 디렉토리를 제외해야합니다. 검색 패턴으로 작동하지 않는 정규식을 이미 발견했습니다. 어떤 검색 패턴을 사용합니까?C# directory.getdirectories에서 하이픈을 제외하십시오.

답변

3

아마 linq 쿼리로 충분할까요?

//query notation 
    var result = from d in Directory.GetDirectories(path) 
       where !d.Contains("-") 
       select d; 
    //'dot' notation 
    var result2 = Directory.GetDirectories(path) 
        .Where(dir => !dir.Contains("-")); 

EDIT (기타 설명)

위에 용액 "LINQ to Objects" 불린다. IEnumerable 또는 IEnumerable<T> 인터페이스를 구현하는 컬렉션을 쿼리하는 방법입니다. GetDirectories 메서드는 Linq를 사용할 수있는 문자열 Array을 반환합니다. Linq에 관한 많은 정보가 인터넷에 있습니다. Linq의 파워를 MSDN의 다음 예제를 통해 볼 수 있습니다 : 101 Linq Samples. BTW Linq는 XML, 데이터베이스 등 다양한 소스에서 데이터를 검색하는 데 유용합니다.

+0

나는 새 컴퓨터 과학 학생입니다. 나는 그 코드를 많이 인식하지 못합니다. 내가 그것을 이해할 수 있도록 자료를 참고할 수 있습니까? – Paul

+0

.NET 4.0을 사용하는 경우 [Directory.EnumerateDirectories()'] (http://msdn.microsoft.com/en-us/library/dd383304.aspx)를 대신 사용하는 것이 좋습니다. –

+0

@Paul 귀하에게 유용한 정보가 더 있습니다. – nan

2
System.Collections.ObjectModel.Collection<string> resultDirs=new System.Collections.ObjectModel.Collection<string>(); 
      foreach (string dir in System.IO.Directory.GetDirectories("path")) 
      { 
       if (!dir.Contains("-")) resultDirs.Add(dir); 
      } 
1

하지 LINQ 방법 :

static void Main(string[] args) 
    { 

     string StartingPath = "c:\\"; 

     List<string> mydirs = new List<string>(); // will contains folders not containing "-" 

     foreach (string d in Directory.GetDirectories(StartingPath)) 
     {        
      if (!(d.Contains("_"))) 
      { 
       mydirs.Add(d); 
      }     

      foreach (string dir in mydirs) 
      { 
       Console.WriteLine(dir); 
      } 
     } 
    } 
} 
관련 문제