我有一个从远程服务器删除日志文件的工作程序(基于某种模式)。现在,当我想得到符合我的标准的文件计数时,我遇到了问题。它变成了我不能直接从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.func
1条答案
按热度按时间krcsximq1#
Where
方法参数中的语法不是有效的lambda函数,您缺少参数列表。它应该是:此外,不要重复调用
ListDirectory
,更不要说在每次迭代中调用。