为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取 DirectoryInfo 列表,其中目录名称包含存储在 List<string> ?

如何获取 DirectoryInfo 列表,其中目录名称包含存储在 List<string> ?

元芳怎么了 2021-11-21 10:00:30
假设我有一个字符串列表。这些字符串将是我要打开的目录名称的一部分。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();现在,我可以将主目录中的所有目录加载到我的变量中,但我想添加如下内容: .Where(x => x.Name.Contains(/*A string found in my List above*/)编辑:在上面的语句中,参数 x 的类型为 DirectoryInfo。所以 x.Name 应该返回目录的名称。我不知道怎么搜索List.Any(s => string.Contains(s)) 当我还没有设置字符串变量时。理想情况下,我只想搜索列表中的每个元素以进行匹配,而无需单独设置一些临时字符串变量。
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

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


查看完整回答
反对 回复 2021-11-21
?
炎炎设计

TA贡献1808条经验 获得超4个赞

所以你有一个 的序列DirectoryInfos和一个 的序列strings。


您希望以DirectoryInfos这样的方式过滤 的序列,以便只有那些DirectoryInfos具有Name以您的字符串序列中的至少一个字符串开头的字符串。


所以,如果你的字符串的序列中包含“富”,比你的最终结果应该至少包含所有DirectoryInfos,其Name与启动Foo。


IEnumerable<string> strings = ...

IEnumerable<DirectoryInfo> directoryInfos = ...


var result = directoryInfos

    .Where(directoryInfo => strings

           .Any(str => directoryInfo.Name.StartsWitch(str));

用一句话来说:


从所有 DirectoryInfo 的序列中,只保留那些 DirectoryInfo 的名称,其中该 DirectoryInfo 的名称以字符串序列中的任何一个字符串开头。


查看完整回答
反对 回复 2021-11-21
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信