Нужен совет по хорошему способу отфильтровать определенные имена файлов из метода Directory.GetFiles в C # - PullRequest
1 голос
/ 27 июля 2011

В моем приложении MVC я возвращаю файлы с файлового сервера в мое представление.

Чтобы упростить мою проблему: допустим, у меня есть file1, file2 и file3, возвращаемые из моего метода Directory.GetFiles.Я был проинструктирован не возвращать file2, следовательно, показывая только file1 и file3 на мой взгляд.

Неизбежно, они придут в то время, когда правила изменятся, и файл2 нужно будет снова показать.Каков был бы самый разумный способ сохранить список отфильтрованных в настоящее время файлов и проверить этот список?(без установки файлов на «скрытый»);Одна идея, которую я мог бы сделать, это написать имя файла в репозитории и провести перекрестную проверку, но я просто беспокоюсь о создании катастрофы обслуживания ...

есть ли лучшее решение, которое я пропускаю?

Ответы [ 2 ]

6 голосов
/ 27 июля 2011

1001 * попробовать *

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

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

РЕДАКТИРОВАТЬ - согласно комментарию:

Кэширование результата может быть достигнуто довольно легко ...

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

Затем вы можете выбрать, что отображать - когда вам нужно отобразить все, тогда просто используйте FullList, когда вам нужно отобразить только существующие запрещенные файлы, вы можете FullList.Intersect (ForbiddenList) и когда вам нужно отобразить все без запрещенных файлов Вы делаете FullList.Except (ForbiddenList).

2 голосов
/ 27 июля 2011

Я бы использовал настраиваемое регулярное выражение для фильтрации файлов.Это имеет несколько преимуществ: вы можете исключить любой шаблон (например, конкретное расширение или файлы, начинающиеся с определенной строки или несколько файлов), и его легко поддерживать (возможно, даже через веб-интерфейс).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...