字符串数组到字符串转换所需的Linq语法

时间:2013-03-07 13:27:42

标签: c# linq c#-4.0

我是特定文件夹中数组中所选文件的列表。

String[] allfiles = System.IO.Directory.GetFiles(Target, "*.*", System.IO.SearchOption.AllDirectories);

我需要将所有这些文件转换为字符串变量,并且在LINQ的帮助下,每行都附加“\ n”字符。我可以像下面的循环一样做,但我在LINQ语法中需要。

String strFileName = string.Empty;

for ( int i = 0; i < allfiles.Length ; i++)
  strFileName = strFileName + "\n" + allfiles[1] ;

7 个答案:

答案 0 :(得分:7)

首先,我会使用Directory.EnumerateFiles代替,因此您无需等到所有文件都被读取。然后,您可以使用string.Join(Environment.NewLine, allFileNames)

IEnumerable<string> allFileNames = Directory.EnumerateFiles(Target, "*.*", System.IO.SearchOption.AllDirectories);
string strFileNames  = string.Join(Environment.NewLine, allFileNames);

答案 1 :(得分:5)

够容易

String.Join("\n",allFiles)

答案 2 :(得分:4)

你不需要Linq这样做,你可以使用String.Join方法,如Jamiec的回答所示。

现在,如果您真的想要使用Linq,可以使用Aggregate

string strFileName = allfiles.Aggregate("", (acc, file) => acc + "\n" + file);

或者更好,使用StringBuilder

string strFileName = allfiles.Aggregate(
                                  new StringBuilder(),
                                  (acc, file) => acc.AppendLine(file),
                                  acc => acc.ToString());

答案 3 :(得分:2)

如果必需使用LINQ:

var result = allFiles.Aggregate(new StringBuilder(),
                                (sb, s) => sb.AppendLine(s),
                                sb => sb.ToString());

答案 4 :(得分:0)

你不需要linq。只需使用简单的string.Join()方法。

string.Join("\n",allfiles);

答案 5 :(得分:-1)

你不需要Linq这样做你可以使用string.Join()方法。

String strFileName = string.Join("\n", allfiles);

答案 6 :(得分:-1)

以下应该工作

String.Join(delimiter,stringArray);