【问题标题】:Why is my List.Contains not working?为什么我的 List.Contains 不起作用?
【发布时间】:2014-03-07 04:02:30
【问题描述】:

由于某种原因,我下面的代码无法正常工作。我已经确认文件夹中有 .idx 和 .log 文件。有人可以帮忙吗?

谢谢。

List<string> subDirList = new List<string>(Directory.GetFiles(srcPath, "*"));

if (subDirList.Contains(".idx") && subDirList.Contains(".log"))
{
    ...
}

【问题讨论】:

  • 你要做的第一件事应该是查看subDirList的内容。
  • 嗨,Marcin,我已经确认 .idx 和 .log 都存在于内容中。由于我的声誉还不够高,因此我无法在此处发布屏幕截图,但字符串都在 subDirList 中。
  • 很可能,您不会有两个文件完全分别名为".idx"".log"。相反,您需要检查是否可以找到 文件名 包含 .idx.log 的两个文件。
  • 我可能会在这里回答我自己的问题,但是 List.Contains 是否需要匹配 List 的整个行?还是只是其中的一部分?因为整行类似于“C:\Temp\Test\file1.log”和“C:\Temp\Test\file2.idx”。这会从 List.Contains(".log") 返回 true 吗?
  • 没有。 Contains on List&lt;string&gt; 要求匹配整个字符串。

标签: c# string list contains


【解决方案1】:

subDirList 包含文件名,而不仅仅是扩展名。这就是为什么你什么也没找到。

您可能应该将AnyEndsWith 一起使用:

if (subDirList.Any(x => x.EndsWith(".idx")) && subDirList.Any(x => x.EndsWith(".log")))

或者如果.idx.log 不是扩展名,而只是文件名的一部分,请使用Contains

if (subDirList.Any(x => x.Contains(".idx")) && subDirList.Any(x => x.Contains(".log")))

【讨论】:

    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2015-09-25
    • 2018-03-05
    • 2013-04-19
    • 2015-10-17
    • 2016-02-20
    相关资源
    最近更新 更多