我有这些文件名:
Erb3PCustsExport-303_20080318_223505_000.xml
Erb3PCustsExport-303_20080319_063109_000_Empty.xml
Erb3PDelCustsExport-303_20080319_062410_000.xml
我不想提取以empty
结尾的文件。我只想提取名称中包含CustxExport
的文件,但如果文件名为DelCustsExport
,我不想提取它。
这是我的代码
foreach (string file in Directory.EnumerateFiles(xmlFolder, "*CustsExport*.xml")
.Where(fn => !Path.GetFileNameWithoutExtension(fn).EndsWith("Empty")))
这样可以提取名称中包含CustsExport
的所有文件,而不是提取以Empty
结尾的文件,但这不适用于DelCustsExport
等文件/ p>
你能帮忙吗
答案 0 :(得分:2)
您是否可以在where子句中添加其他条件以确保文件名不包含DelCustsExport
?
foreach (string file in Directory.EnumerateFiles(xmlFolder, "*CustsExport*.xml")
.Where(fn => !Path.GetFileNameWithoutExtension(fn).EndsWith("Empty")
&& !Path.GetFileNameWithoutExtension(fn).Contains("DelCustsExport")))
答案 1 :(得分:1)
我不知道您想要的确切规则,但正则表达式为您提供了很多自由和灵活性。只需从示例中扣除我可以获得的信息,此代码就可以产生所需的结果:
var validFilename = new Regex(@"(?<!Del)CustsExport.*(?<!Empty)\.xml$");
foreach (var file in Directory
.EnumerateFiles(xmlFolder)
.Where(fn => validFilename.IsMatch(fn)))