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.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());
于 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 に答える