我想在某个路径中获取所有.cs文件。我正在使用
这样做string [] files = Directory.GetFiles(path, pattern);
其中path是有效的文件夹路径,模式是* .cs。但是这也会返回AssemblyInfo.cs,我不希望包含该文件,尽管它与模式匹配。我想忽略所有名为AssemblyInfo.cs
的文件答案 0 :(得分:4)
如果您仍然需要它在阵列中,您可以执行以下操作:
string[] files = Directory.GetFiles(path, pattern).Where(filename => !filename.EndsWith("AssemblyInfo.cs")).ToArray();
如果您不需要它作为一个数组,那么您可以取消对.ToArray()
的调用,这将返回IEnumerable<string>
。
如果您使用的是不支持Linq的.NET版本(即3.5之前的版本),那么您可以在迭代数组时跳过这些部分,如下所示:
string[] files = Directory.GetFiles(path, pattern);
foreach (string filename in files)
{
if (filename.EndsWith("AssemblyInfo.cs"))
{
continue;
}
}
答案 1 :(得分:3)
最简单的方法是:
string[] files = Directory.GetFiles(path, pattern).ToList().RemoveAll(f => f.IndexOf("AssemblyInfo.cs", StringComparison.CurrentCultureIgnoreCase) >= 0).ToArray();
答案 2 :(得分:2)
有几个选项可以做到这一点,例如
string[] files = (from x in Directory.GetFiles(path, pattern) where !x.EndsWith ("AssemblyInfo.cs") select x).ToArray();
答案 3 :(得分:2)
假设您使用的是.NET 3.5或更高版本:
string [] files = Directory.GetFiles(path, pattern).Where(o => Path.GetFileName(o).ToLower() != "assemblyinfo.cs").ToArray();