簡體   English   中英

創建元組<ienumerable>對於本地文件</ienumerable>

[英]Creating Tuple<IEnumerable> for Local Files

抱歉,C# 不是我的第一語言,我繼承了一個我希望更改的程序。

下面的代碼用於列出 SFTP 中可供下載的所有文件:

public Tuple<IEnumerable<SftpFile>, string> GetRemoteFiles(string strHost, string strUserName, string strPWord, string strSFTPDirectory)
        {
            using (SftpClient sftp = new SftpClient(strHost, strUserName, strPWord))
            {
                string result = "";
                try
                {
                    sftp.Connect();

                    var files = sftp.ListDirectory(strSFTPDirectory);                  

                    sftp.Disconnect();
                    return Tuple.Create(files,result);
                }
                catch (Exception e)
                {
                    if (sftp.IsConnected)
                    {
                        sftp.Disconnect();
                    }

                    IEnumerable<SftpFile> files = null;
                    result = "Error: " + e.ToString();
                    return Tuple.Create(files, result);
                }
            }
        }

但是我正在嘗試重新創建它以列出准備上傳的目錄中的所有本地文件,但我不知道該怎么做。

我試過以下:

public Tuple<IEnumerable<Array>, string> GetLocalFiles(string strPDbOutboxFilePath)
        {
            {
                string result = "";
                try
                {
                    var files = Directory.GetFiles(strPDbOutboxFilePath, "*", SearchOption.AllDirectories);
                    
                    return Tuple.Create(files, result);
                }
                catch (Exception e)
                {
                    IEnumerable<string> files = null;
                    result = "Error: " + e.ToString();
                    return Tuple.Create(files, result);
                }
            }
        }

和:

public Tuple<IEnumerable<FileInfo>, string> GetLocalFiles(string strPDbOutboxFilePath)
        {
            {
                string result = "";
                try
                {
                    var files = Directory.GetFiles(strPDbOutboxFilePath, "*", SearchOption.AllDirectories);
                    
                    return Tuple.Create(files, result);
                }
                catch (Exception e)
                {
                    IEnumerable<string> files = null;
                    result = "Error: " + e.ToString();
                    return Tuple.Create(files, result);
                }
            }
        }

我得到相應的錯誤:

CS0029: Cannot implicitly convert type 'System.Tuple<System.Collections.Generic.IEnumerable<string>, string>' to 'System.Tuple<System.Collections.Generic.IEnumerable<Array>, string>'

或者:

CS0029: Cannot implicitly convert type 'System.Tuple<System.Collections.Generic.IEnumerable<string>, string>' to 'System.Tuple<System.Collections.Generic.IEnumerable<System.IO.FileInfo>, string>'

非常感謝任何幫助/建議。

謝謝

FileInfo不是stringDirectory.GetFiles返回一個string[] (文件名)。

我會返回一個命名元組:

public static (IEnumerable<string> files, string error) GetLocalFiles(string strPDbOutboxFilePath)
{
    try
    {
        var files = Directory.GetFiles(strPDbOutboxFilePath, "*", SearchOption.AllDirectories);
        return (files, "");
    }
    catch (Exception e)
    {
        return (Enumerable.Empty<string>(), "Error: " + e.ToString());
    }
}

如果你想返回一個FileInfo[]你必須使用DirectoryInfo.GetFiles

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM