我有以下代碼:如何篩選具有多個條件的Directory.EnumerateFiles?
List<string> result = new List<string>();
foreach (string file in Directory.EnumerateFiles(path,"*.*",
SearchOption.AllDirectories)
.Where(s => s.EndsWith(".mp3") || s.EndsWith(".wma")))
{
result.Add(file);
}
它正常工作和做什麼,我需要的。除了一件小事。我想找到一個更好的方法來篩選多個擴展。我想用一個字符串數組與過濾器,如本:
string[] extensions = { "*.mp3", "*.wma", "*.mp4", "*.wav" };
什麼是最有效的方式做到這一點使用.NET框架4.0/LINQ?有什麼建議麼?
我想感謝所有幫助是一個偶然的程序員:-)
你應該考慮並行運行每個擴展搜索。我在答案中創建了一些有用的幫助器方法。一個採用正則表達式,另一個採用字符串列表。 – 2010-09-20 18:51:28
這是一個非常*舊的問題(已經適當地回答@MikaelSvenson),但另一種選擇是使用Enumerable擴展.Union(),如下所示:foreach(Directory.EnumerateFiles(path,「* .mp3 「,SearchOption.AllDirectories).Union(Directory.EnumerateFiles(path,」* .wma「,SearchOption.AllDirectories)){...} – Kirkaiya 2015-03-24 20:44:48