如何获取 DirectoryInfo 列表,其中目录名称包含存储在 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();

现在,我可以将主目录中的所有目录加载到我的变量中,但我想添加如下内容:


 .Where(x => x.Name.Contains(/*A string found in my List above*/)

编辑:在上面的语句中,参数 x 的类型为 DirectoryInfo。所以 x.Name 应该返回目录的名称。


我不知道怎么搜索


List.Any(s => string.Contains(s)) 

当我还没有设置字符串变量时。理想情况下,我只想搜索列表中的每个元素以进行匹配,而无需单独设置一些临时字符串变量。


元芳怎么了
浏览 175回答 2
2回答

繁华开满天机

.Where(x=> listOfStrings.Any(c=> x.Contains(c)))&nbsp;就是你要找的。

炎炎设计

所以你有一个 的序列DirectoryInfos和一个 的序列strings。您希望以DirectoryInfos这样的方式过滤 的序列,以便只有那些DirectoryInfos具有Name以您的字符串序列中的至少一个字符串开头的字符串。所以,如果你的字符串的序列中包含“富”,比你的最终结果应该至少包含所有DirectoryInfos,其Name与启动Foo。IEnumerable<string> strings = ...IEnumerable<DirectoryInfo> directoryInfos = ...var result = directoryInfos&nbsp; &nbsp; .Where(directoryInfo => strings&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.Any(str => directoryInfo.Name.StartsWitch(str));用一句话来说:从所有 DirectoryInfo 的序列中,只保留那些 DirectoryInfo 的名称,其中该 DirectoryInfo 的名称以字符串序列中的任何一个字符串开头。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript