我有一个小问题。
string[] MatchedFiles = Directory
.GetFiles(this.sReportDirectory, "*", SearchOption.AllDirectories)
.Where(s => s.StartsWith(this.sProjectNumber + "_InputCounts", StringComparison.CurrentCultureIgnoreCase))
.ToArray();
我需要过滤更多文件,但它甚至不能使用一个文件。数组总是空的!但是,它适用于包含?
我尝试过所有字符串比较。
有人可以解释我做错了什么吗?
或者是否有更好的方法来获取具有多个过滤器的文件计数,然后通过所有文件的数组?
我正在使用Visual Studio 2015
由于
答案 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();