Сравнение файлов в двух разных каталогах

На виртуалке есть удаленный ftp каталог с текстовыми файлами. Я получаю названия 5 последних файлов сортируя их по дате, и пытаюсь найти совпадения по названию файлов в каталоге на моем пк (если такого файла у меня нет, то необходимо скачать его).

При такой реализации программа перебирает каждый файл в моем каталоге, и соответственно качает файл с ftp бесконечное число раз, пока не произойдет совпадение или не закончится перебор. Можно ли как-то уйти от этого и скачивать файл только после проверки всех файлов в моем каталоге?

try
{
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Ftp,
        HostName = "xxx.xxx.xxx.xxx",
        UserName = "xxxx",
        Password = "xx",
    };

    using (Session session = new Session())
    {    
        session.Open(sessionOptions);

        const string remotePath = "/files";
        const string localPath = @"C:\downloaded\";

        RemoteDirectoryInfo directoryInfo = session.ListDirectory(remotePath);

        var firstFiveFiles = directoryInfo.Files
            .OrderByDescending(i => i.LastWriteTime).Take(5);

        if (firstFiveFiles == null)
        {
            throw new Exception("Файлы не найдены");
        }

        string[] files = new DirectoryInfo(localPath).GetFiles().Select(o => o.Name).ToArray();

        foreach (var filenameRemote in firstFiveFiles)
        {
            foreach(string filenameLocal in files)
            {    
                if (filenameRemote.Name == filenameLocal)
                {
                    Console.WriteLine("Такой файл есть");
                    break;
                }
                else
                {
                    session.GetFiles(
                        RemotePath.EscapeFileMask(filenameRemote.FullName), localPath).Check();                                    
                }
                continue;
            }
            continue;    
        }
    }

    return 0;
}
catch (Exception e)
{
    Console.WriteLine("Ошибка: {0}", e);
    return 1;
}

Ответы (0 шт):