我有一个包含文件扩展名和布尔值(启用/禁用)的结构列表。
我想有效地从给定文件夹中选择所有文件,这些文件与扩展名设置为启用的给定扩展名匹配。我在 StackOverflow 上发现了一个类似的问题: GetFiles with multiple extensions 但它们使用的是字符串数组,而不是结构。
结构:
public struct MusicFileExtension
{
public string name { get; set; }
public bool enabled { get; set; }
}
public List<MusicFileExtension> Extensions;
我能想到的唯一解决方案是:
private IEnumerable<FileInfo> getFilesInFolderByExtensions(Options options, DirectoryInfo folderPath, SearchOption searchSubfolders)
{
string [] ext = new string[options.Extensions.Count];
int i =0;
foreach (Options.MusicFileExtension extension in options.Extensions)
{
if (extension.enabled)
ext[i] = extension.name;
i++;
}
IEnumerable<FileInfo> files = folderPath.EnumerateFiles();
return files.Where(f => ext.Contains(f.Extension));
}
但是当可以选择使用 Linq 使其更有效时,这有点愚蠢。