我是特定文件夹中数组中所选文件的列表。
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] ;
答案 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);