在.NET的更高版本中,有一种简洁的方法来检查名称跟随模式的文件的数量或存在。
private int HowManyDonkeys(string path)
{
return Directory.EnumerateFiles(path, "*donkey*");
}
private bool AreThereAnyDonkeys(string path)
{
return Directory.EnumerateFiles(path, "*donkey*").Any();
}
但是,我想知道如何扭转它并列出不是驴的文件。一种方法是列出所有并减去不需要的数量,但它不是那么整洁。另一种方法是使用LINQ并且像这样。
Directory.EnumerateFiles(path, "*")
.Count(name => name.Contains("anti-donkey"));
Directory.EnumerateFiles(path, "*")
.Any(name => name.Contains("anti-donkey"));
是否有更好的方法(即让我指定模式的作为输入的相反的过滤条件?
答案 0 :(得分:1)
获取文件:
var files = Directory.EnumerateFiles("C:\\").Where(x => !x.Contains("donkey")).ToList();
获取点数
int count= Directory.EnumerateFiles("C:\\").Count(x => !x.Contains("donkey"));
答案 1 :(得分:1)
EnumerateFiles
只允许简单的DOS搜索(*和?),没有正则表达式。
正如其他人所说,你可以使用LINQ但这不是你的问题。