簡體   English   中英

如何獲取DirectoryInfo的列表,其中目錄名稱包含存儲在List中的字符串 <string> ?

[英]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"};

如果這是我的列表,則我的目錄可能如下所示:

  • Foo_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpful
  • Bar_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpful
  • LocalHost_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpful
  • SomeIPAddress_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpful

所以我在這里有將目錄信息加載到列表中的代碼:

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”,則最終結果應至少包含其NameFoo開頭的所有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM