1

我有来自特定文件夹的数组中选定文件的列表。

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] ;
4

7 回答 7

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);
于 2013-03-07T13:31:14.730 回答
5

很容易

String.Join("\n",allFiles)
于 2013-03-07T13:29:52.360 回答
4

您不需要 Linq 来执行此操作,您可以使用String.JoinJamiec 的回答中说明的方法。

现在,如果你真的想用 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());
于 2013-03-07T13:33:30.827 回答
2

如果需要使用 LINQ:

var result = allFiles.Aggregate(new StringBuilder(),
                                (sb, s) => sb.AppendLine(s),
                                sb => sb.ToString());
于 2013-03-07T13:33:56.143 回答
0

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

string.Join("\n",allfiles);
于 2013-03-07T13:31:13.690 回答
-1

您不需要 Linq 来执行此操作,您可以改用 string.Join() 方法。

String strFileName = string.Join("\n", allfiles);
于 2013-03-07T13:30:13.170 回答
-1

以下应该工作

String.Join(delimiter,stringArray);
于 2013-03-07T13:30:51.003 回答