0

多くのサブディレクトリを含むディレクトリがあります。例えば:

Emp1
 Acc
 profile
   pro1.xml
   pro2.xml
 data
Emp2
 Acc
 profile
   pro1.xml
   pro2.xml
 data
Emp3
 Acc
 profile
   pro1.xml
   pro2.xml
 data

foreach ループを書きたいので、プロファイル フォルダーにあるファイルのみを取得します。例えば:

 foreach string filename in directory.getdirectories(filepat){
        //code.
  }

これを行うための検索パターンを作成するのを手伝ってもらえますか?

4

4 に答える 4

1

ファイルとディレクトリに流暢な拡張機能をいくつか書きました。これにより、 linqでこれをうまく行うことができます。

または使用してナゲットからダウンロードInstall-Package StaticVoid.Core.IO

diretory.Directories().SelectMany(d => 
   d.Directory(di => di.Name == "Acc")
       .Directory(di => di.Name == "profile").Files());
于 2012-05-24T09:09:37.027 に答える
1

質問の編集後に編集....

var directoryInfo = new DirectoryInfo(@"c:\temp\stackoverflow");
foreach (var element in dinfo.GetDirectories(@"profile", SearchOption.AllDirectories).SelectMany(x => x.GetFiles()))
{
    Console.WriteLine (element);
}

このような?

于 2012-05-24T09:01:56.420 に答える
0

たぶん、あなたは次のようなことを試すことができます:

 IEnumerable<string> directories = Directory.GetDirectories("PATH", "*.*", SearchOption.AllDirectories).Where(d => d == "ProfileFolder");
 foreach (string directory in directories)
 {
     string[] files = Directory.GetFiles(directory, "*.*", SearchOption.TopDirectoryOnly);
 }
于 2012-05-24T09:11:11.233 に答える
0

それはあなたが望むものかもしれません...

 string [] dirname = Directory.GetDirectories(path){
                 foreach( string s in dirname)
                 {
                   if(s.Contains("profile"))
                   {
                     //do your work
                   }
                 }
于 2012-05-24T09:06:50.440 に答える