元芳怎么了
2021-11-21 10:00:30
假設(shè)我有一個字符串列表。這些字符串將是我要打開的目錄名稱的一部分。var listOfStrings = new List<string>(){"Foo", "Bar", "LocalHost", "SomeIPAddress"};如果這是我的列表,我的目錄可能如下所示:Foo_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpfulBar_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpfulLocalHost_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpfulSomeIPAddress_TodaysDate_ThisFileNameIsMostlyLongAndUnhelpful所以我在這里有將目錄信息加載到列表中的代碼:m_jsonDirectories = new DirectoryInfo(@"C:\ProgramData\SCLDDB\ReportLogs\") .GetDirectories() .OrderByDescending(p_f => p_f.LastWriteTime) .ToList();現(xiàn)在,我可以將主目錄中的所有目錄加載到我的變量中,但我想添加如下內(nèi)容: .Where(x => x.Name.Contains(/*A string found in my List above*/)編輯:在上面的語句中,參數(shù) x 的類型為 DirectoryInfo。所以 x.Name 應(yīng)該返回目錄的名稱。我不知道怎么搜索List.Any(s => string.Contains(s)) 當(dāng)我還沒有設(shè)置字符串變量時。理想情況下,我只想搜索列表中的每個元素以進(jìn)行匹配,而無需單獨設(shè)置一些臨時字符串變量。
2 回答

炎炎設(shè)計
TA貢獻(xiàn)1808條經(jīng)驗 獲得超4個贊
所以你有一個 的序列DirectoryInfos和一個 的序列strings。
您希望以DirectoryInfos這樣的方式過濾 的序列,以便只有那些DirectoryInfos具有Name以您的字符串序列中的至少一個字符串開頭的字符串。
所以,如果你的字符串的序列中包含“富”,比你的最終結(jié)果應(yīng)該至少包含所有DirectoryInfos,其Name與啟動Foo。
IEnumerable<string> strings = ...
IEnumerable<DirectoryInfo> directoryInfos = ...
var result = directoryInfos
.Where(directoryInfo => strings
.Any(str => directoryInfo.Name.StartsWitch(str));
用一句話來說:
從所有 DirectoryInfo 的序列中,只保留那些 DirectoryInfo 的名稱,其中該 DirectoryInfo 的名稱以字符串序列中的任何一個字符串開頭。
添加回答
舉報
0/150
提交
取消