首页 > 解决方案 > 如何转换 System.Collections.Generics.IENumerable串起来

问题描述

我想将从 Directory.EnumerateFiles 方法获得的变量转换为 string 。此变量包含一组文件夹的文件路径,其中包含 FileServer.config

 var foundFiles = Directory.EnumerateFiles(rootDirectory, "fileserver.config", 

    SearchOption.AllDirectories);
    var RepositoryName = Path.GetFileName(Path.GetDirectoryName(foundFiles));

这里的字符串 rootDirectory 是一个特定的路径

我有什么办法可以做到这一点?

根据我当前的实现,我在 foundFiles 变量下收到错误“无法将 System.Collections.Generics.IENumerable 转换为字符串”。

标签: c#filetype-conversion

解决方案


我原来的答案

最初我以为您只希望有一个名为的文件fileserver.config,并且您想要该文件的路径 - 这可以使用FirstOrDefault().

using System.Linq;

String firstFileMatch = Directory
    .EnumerableFiles( rootDirectory, "fileserver.config" )
    .FirstOrDefault();

if( firstFileMatch == null )
{
    throw new FileNotFoundException();
}

return Path.GetDirectoryName( Path.GetDirectoryName( fileFirstMatch ) );

新答案

在后续评论中,您说您想打印所有文件 - 所以这也很简单,使用String.Join

using System.IO;
using System.Linq;

IEnumerable<String> fileNames = new DirectoryInfo( rootDirectoryPath )
    .EnumerableFiles( "fileServer.config", SearchOption.AllDirectories )
    .Select( fi => fi.Directory.FullName )
    .Select( dirPath => dirPath.Substring( rootDirectoryPath.Length ) );

String allNames = String.Join( "\r\n\r\n", fileNames );
MessageBox.Show( allNames );

推荐阅读