[英]How can I get a list of DirectoryInfo where the name of the directories contains a string stored in a List<string>?
假設我有一個字符串列表。 這些字符串將成為我要打開的目錄名稱的一部分。
var listOfStrings = new List<string>(){"Foo", "Bar", "LocalHost", "SomeIPAddress"};
如果這是我的列表,則我的目錄可能如下所示:
所以我在這里有將目錄信息加載到列表中的代碼:
m_jsonDirectories = new DirectoryInfo(@"C:\ProgramData\SCLDDB\ReportLogs\")
.GetDirectories()
.OrderByDescending(p_f => p_f.LastWriteTime)
.ToList();
現在,我可以將master目錄中的所有目錄加載到我的變量中,但是我想添加以下內容:
.Where(x => x.Name.Contains(/*A string found in my List above*/)
編輯:在上面的語句中,參數x為DirectoryInfo類型。 因此x.Name應該返回目錄的名稱。
我不知道怎么搜尋
List.Any(s => string.Contains(s))
當我尚未設置字符串變量時。 理想情況下,我只想搜索列表中的每個元素以查找匹配項,而無需單獨設置一些臨時字符串變量。
.Where(x=> listOfStrings.Any(c=> x.Contains(c)))
是您要尋找的。
因此,您有一個DirectoryInfos
序列和一個strings
序列。
您希望以這樣一種方式過濾DirectoryInfos
的序列,即只有那些Name
至少以您的字符串序列中的一個字符串開頭的DirectoryInfos
。
因此,如果您的字符串序列包含“ Foo”,則最終結果應至少包含其Name
以Foo
開頭的所有DirectoryInfos
。
IEnumerable<string> strings = ...
IEnumerable<DirectoryInfo> directoryInfos = ...
var result = directoryInfos
.Where(directoryInfo => strings
.Any(str => directoryInfo.Name.StartsWitch(str));
換句話說:
從所有DirectoryInfo的序列開始,僅保留那些DirectoryInfo的名稱,該DirectoryInfo的名稱以字符串序列中的任何字符串開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.