无法在 C# 中将 fileinfo[] 隐式转换为 string[]

Cannot implicitly convert fileinfo[] to string[] in c#

我在 c# 中有这一行需要修改,目前它工作正常

 string[] UploadFilesList = new DirectoryInfo(UploadFolder)
         .GetFiles()
         .Select(o => o.Name.Replace(".txt", ""))
         .ToArray();

我不是编写此代码的人。我想要做的是 而不是 将 .txt 替换为任何内容。

所以我这样做了

string[] UploadFilesList = new DirectoryInfo(UploadFolder)
        .GetFiles()
        .Select(o => o)
        .ToArray();

但收到此错误

Cannot implicitly convert fileinfo[] to string[] in c#

我又把代码改成了

string[] UploadFilesList = new DirectoryInfo(UploadFolder)
        .GetFiles()
        .ToArray();

但还是一样的错误,如何解决?

在您的第一个代码片段中,您要选择每个文件的文件名,然后替换扩展名。

在您的第二个和第三个代码片段中,您从 DirectoryInfo 获取所有文件并尝试将其存储在 string[] 中,但是

DirectoryInfo().GetFiles() returns an array of type FileInfo

由于这个原因,您收到错误 无法将 fileinfo[] 隐式转换为 string[]


如果你想要一个上传文件名称的数组,那么试试下面的,

string[] UploadFilesList = new DirectoryInfo(UploadFolder)
           .GetFiles()          //Provide list of files from given. directory
           .Select(x => x.Name) //Select only Name from each FileInfo. Do not replace an extension
           .ToArray();          //Convert to an array.

编译器告诉您,您正在尝试将文件存储在一个字符串数组中,这是不可能的,要获得一个字符串数组,只需 select 名称 属性 而不是所有的文件.

.select(o=>o.name) .toArray();