StartsWith不会返回true

时间:2016-11-24 11:25:19

标签: c#

我有一个小问题。

string[] MatchedFiles = Directory
    .GetFiles(this.sReportDirectory, "*", SearchOption.AllDirectories)
    .Where(s => s.StartsWith(this.sProjectNumber + "_InputCounts", StringComparison.CurrentCultureIgnoreCase))
    .ToArray();

我需要过滤更多文件,但它甚至不能使用一个文件。数组总是空的!但是,它适用于包含?

我尝试过所有字符串比较。

有人可以解释我做错了什么吗?

或者是否有更好的方法来获取具有多个过滤器的文件计数,然后通过所有文件的数组?

我正在使用Visual Studio 2015

由于

3 个答案:

答案 0 :(得分:3)

Directory.GetFiles返回文件的完整路径,因此您必须先删除路径。例如与Path.GetFileName

string[] MatchedFiles = Directory
    .GetFiles(this.sReportDirectory, "*", SearchOption.AllDirectories)
    .Where(s => Path.GetFileName(s).StartsWith(this.sProjectNumber + "_InputCounts", StringComparison.CurrentCultureIgnoreCase))
    .ToArray();

答案 1 :(得分:1)

应该直接使用模式:

string[] MatchedFiles = Directory
.GetFiles(this.sReportDirectory, this.sProjectNumber + "_InputCounts*", SearchOption.AllDirectories)
.ToArray();

答案 2 :(得分:-1)

也许您应该使用StartsWith方法中的完整路径:

string[] MatchedFiles = Directory
.GetFiles(this.sReportDirectory, "*", SearchOption.AllDirectories)
.Where(s => s.StartsWith(this.sReportDirectory + "\\" + this.sProjectNumber + "_InputCounts", StringComparison.CurrentCultureIgnoreCase))
.ToArray();