2011-07-26 4 views
1

C#でDirectory.GetFiles方法から特定のファイル名をフィルタリングするための良い方法のアドバイスが必要です。 は私が私の見解にファイルサーバからファイルを返すよ私のMVCアプリで

は私の問題を単純化するには、次の私はFILE1、FILE2を持っている、とFILE3が私のDirectory.GetFilesメソッドから返されたとしましょう。私はfile2を返さないように指示されているので、私のビューにはfile1とfile3しか表示されません。

必然的にルールが変更されたとき、彼らは時間が来るとfile2を再び示したする必要があります。現在フィルタリングされたファイルのリストを保持し、そのリストに対してチェックする最も賢い方法は何でしょうか? (ファイルを「非表示」に設定することなく)。

が見渡せる良好な溶液イムがある...私は何ができるひとつのアイデアは、それに対するリポジトリとのクロスチェックにファイル名を書きですが、私は、保守大惨事の作成についてちょうど心配しますか?

答えて

6

var ForbiddenList = new string[] {"file2"}; 

var Result = Directory.GetFiles().Except (ForbiddenList); 

EDITしてみてください - コメントどおり: - とき、あなたは何を表示するかを選択することができ

var FullList = Directory.GetFiles(); 
var ForbiddenList = new string[] {"file2"}; 

...

結果がかなり容易に達成することができ、キャッシュをFullListを使用して表示する必要があります。既存の禁止ファイルを表示する必要がある場合は、FullList.Intersect (ForbiddenList)と表示する必要があります。禁止されたファイルなしではFullList.Except (ForbiddenList)を実行します。

+1

質問GetFilesの結果をキャッシュ示すように思われます。それは多くの変更を必要としません。 –

2

私は、ファイルをフィルタリングするために構成可能な正規表現を使用すると思います。これにはいくつかの利点があります。パターン(特定の拡張子や特定の文字列で始まるファイル、複数のファイルなど)を除外することができ、メンテナンスが容易です(Webフロントエンド経由でも可能です)。

関連する問題