2011-07-22 7 views
0

List<string>の中の文字列を一緒にマージしてonelinerにする必要がありました。私は簡単な解決策を考え出しましたが、それが最善の方法であるかどうかはわかりません。セパレータと一緒に文字列をマージするC#

文字列の先頭に問題,との最初のバージョン:

string benchmarkiUjemneDatyRazem = ""; 
foreach (string s in benchmarkiUjemne) { 
    benchmarkiUjemneDatyRazem = benchmarkiUjemneDatyRazem + "," + s; 
} 

セカンドバージョン(LINQのパワー)が、それでもと `:

string benchmarkiUjemneDatyRazem = benchmarkiUjemne.Aggregate("", (current, s) => current + "," + s); 

,なしバージョンの作業が、ラインの量は、いくつかの痛みを作ります後で読む:

int b = 0; 
    string benchmarkiUjemneDatyRazem = ""; 
    foreach (string s in benchmarkiUjemne) { 
     if (b == 0) { 
      b = 1; 
      benchmarkiUjemneDatyRazem = s; 
      continue; 
     } 
     benchmarkiUjemneDatyRazem = benchmarkiUjemneDatyRazem + "," + s; 
    } 

私は最初の文字にSubsituteでのLINQに基づいていた思い付いた最終バージョン:

string benchmarkiUjemneDatyRazem = benchmarkiUjemne.Aggregate("", (current, s) => current + "," + s).Substring(1); 

は、この問題に対するこのアプローチは良いですか?それとも実際にそれを行うより良い方法がありますか? StringBuilderなどを使うのと同じですか?

答えて

6

あなたはネット4を使用している場合、あなたはstring.Joinを使用することができます(以前のバージョンでは、これはbenchmarkiUjemnestring[]ある場合にのみ動作します):

string result = string.Join(",", benchmarkiUjemne); 

これは.NET 3.5または古い場合は、することができますまだリストにToArrayを呼び出すことによって、それを使用する:

string result = string.Join(",", benchmarkiUjemne.ToArray()); 
+1

http://msdn.microsoft.com/en-us/library/57a79xd0.aspx – TJHeuvel

+3

List の.ToArray()を呼び出すと簡単に解決できます。 =) –

+0

NET 4を使用しています – MadBoy

関連する問題