假设我有一个字符串列表。这些字符串将是我要打开的目录名称的一部分。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贡献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 的名称以字符串序列中的任何一个字符串开头。
添加回答
举报
0/150
提交
取消