Кратчайший способ вернуть список файлов, используя условие WHERE

1

Я читаю все имена файлов в определенном месте, используя следующий код -

return new DirectoryInfo(location).GetFiles().Select(o => o.Name).ToArray();

Но тогда я хочу иметь список конкретных типов файлов. Что было бы самым коротким способом добиться чего-то вроде следующего -

return new DirectoryInfo(location).GetFiles().Select(o => o.Name.Contains("csv")).ToArray();

Я пробовал этот код, но, видимо, он не работает.

  • 2
    Вы не фильтруете с помощью Select - вы фильтруете с помощью Where ... (как в заголовке!)
  • 0
    Вы указали Where в заголовке вашего вопроса, так почему бы не указать Where в вашем запросе LINQ?
Теги:
list

3 ответа

4

Почему вы не используете searchPattern?

return new DirectoryInfo(location).GetFiles("*.csv")
  • 0
    лол, только четвертый ответ заметил это :)
  • 0
    Неплохо, но не распространяется на фильтрацию по TimeStamnps и т. Д.
1

То, что вам нужно, это не Select, а Where: (и string.EndsWith вместо string.Contains)

return new DirectoryInfo(location).GetFiles().Where(o => o.Name.EndsWith(".csv")).ToArray();
  • 0
    и, вероятно, ToList лучше
  • 0
    лучше использовать Extension, а не EndsWith.
Показать ещё 2 комментария
0

вы должны использовать приведенный ниже код. вместо того, чтобы проверять имя, вы можете проверить расширение файла

new DirectoryInfo("C").GetFiles().Where(o => o.Extension.Contains("csv")).ToArray();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню