для
var exts = new[] { "mp3", "jpg" };
Вы могли бы:
public IEnumerable FilterFiles(string path, params string[] exts) {
return
Directory
.EnumerateFiles(path, "*.*")
.Where(file => exts.Any(x => file.EndsWith(x, StringComparison.OrdinalIgnoreCase)));
}
Directory.EnumerateFiles
для повышения производительности ( Что это разница между Directory.EnumerateFiles vs Directory.GetFiles? ) .EndsWith("aspx", StringComparison.OrdinalIgnoreCase)
, а не .ToLower().EndsWith("aspx")
) Но реальная выгода EnumerateFiles
появляется, когда вы разделяете фильтры и объединяете результаты:
public IEnumerable FilterFiles(string path, params string[] exts) {
return
exts.Select(x => "*." + x) // turn into globs
.SelectMany(x =>
Directory.EnumerateFiles(path, x)
);
}
Это становится немного быстрее, если вам не нужно их поворачивать
Оценка производительности на основе следующего теста LinqPad (примечание: Perf
просто повторяет делегат 10000 раз) https://gist.github.com / zaus / 7454021
(повторно отправлено и расширено от 'duplicate', поскольку этот вопрос специально запросил LINQ: Несколько расширений файлов searchPattern для System.IO.Directory.GetFiles )
Вы должны использовать метод получения ".Document.ContentStart" для ".Document.ContentEnd", так как он находится в формате расширенного текста с добавлением форматирования. Внутри текстового поля есть идеально отформатированные текстовые индикаторы и артефакты, такие как полужирный шрифт, свойства абзаца и типы шрифтов. Вам нужно будет установить предопределенные диапазоны, используя «.Document». свойство, которое обозначает, что вы хотите просто текст:
var txtReturn = TextRange(RichTextBox.Document.ContentStart,
RichTextBox.Document.ContentEnd).Text;
Console.WriteLine(txtReturn);