У меня есть рабочая программа, которая удаляет файлы журналов с удаленного сервера (по определенному шаблону). Теперь, когда я хочу получить количество файлов, соответствующих моим критериям, у меня возникают проблемы. Оказывается, я не могу напрямую получить счет из файлового объекта SftpFile
. Я могу получить количество файлов только после установки точки останова.
Я могу удалить файлы, используя:
private void ListDirectory(SftpClient client, String dirName)
{
var fileext = ".log";
var fileextension = fileext.ToString();
foreach (SftpFile file in client.ListDirectory(dirName))
{
var logFilePath = file.FullName;
var fileCount = client.ListDirectory(dirName).GetEnumerator();
if ((file.Name != ".") && (file.Name != "..") && file.Name.EndsWith(fileextension))
{
Console.WriteLine(file.FullName);
client.Delete(logFilePath);
Console.ReadKey();
}
}
}
И когда я устанавливаю точку останова, я могу получить количество из вложенного объекта этой строки:
var fileCount = client.ListDirectory(dirName).GetEnumerator();
У меня есть снимок отладки:
Теперь мне нужен способ прямого доступа к количеству файлов для моего шаблона, то есть эта строка:
if ((file.Name != ".") && (file.Name != "..") && file.Name.EndsWith(fileextension))
Когда я пытаюсь применить Linq, как показано ниже:
var fileCount = client.ListDirectory(dirName).Where((file.Name != ".") && (file.Name != "..") && file.Name.EndsWith(fileextension)).Count();
, я получаю следующее исключение:
Невозможно преобразовать из 'bool' в 'system.fun c