Tshumore Ответов: 1

Как я могу получить количество файлов, соответствующих определенным критериям в ssh.net


У меня есть рабочий запрос, который удаляет файлы журналов с удаленного сервера. Теперь, когда я хочу получить количество файлов, которые соответствуют моим критериям и, следовательно, те, которые нужно удалить, я не могу использовать
SftpClient client
. Я могу удалять файлы следующим образом :

<pre> 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();


Однако это вложенный объект метода GetEnumerator как показано на прилагаемом рисунке:
https://drive.google.com/open?id=1wTZT1yPuJZnXyhgrLi8yq1qXS6s5dhjU

Что я уже пробовал:

Как я могу непосредственно получить количество файлов , соответствующих моему фильтру, то есть количество файлов здесь:
if ((file.Name != ".") && (file.Name != "..") && file.Name.EndsWith(fileextension))

1 Ответов

Рейтинг:
0

Garth J Lancaster

Простой метод

int count = 0;
if ((file.Name != ".") && (file.Name != "..") && file.Name.EndsWith(fileextension))
{
    Console.WriteLine(file.FullName);
    client.Delete(logFilePath);
    count += 1;
    Console.ReadKey();
}


более сложный (требует больше работы и использования ref для LINQ)

var fileCount = client.ListDirectory(dirName).Where((file.Name != ".") && (file.Name != "..") && file.Name.EndsWith(fileextension)).Count();


Tshumore

Когда я использую Linq я получаю ошибку :
Не удается конвертировать из 'буль' к 'системе.Функ&ЛТ;renci.СШ.протокол SFTP.sftpfile, типа bool=""&ГТ;