检查出口或计数带有模式且没有模式的文件

时间:2015-09-28 08:25:18

标签: c# linq file

在.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"));

是否有更好的方法(即让我指定模式的作为输入的相反的过滤条件?

2 个答案:

答案 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但这不是你的问题。