2011-07-22 40 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; 
    } 

最终版本,我想出了Linq与替代第一个字符:

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

这是好的方法来解决这个问题吗?或者有更好的方法来实际做到这一点?像使用StringBuilder左右?

回答

6

如果您使用.NET 4中,你可以使用string.Join(在早期版本中,这只会工作,如果benchmarkiUjemnestring[]):

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

如果是这样的.Net 3.5或以上,你可以

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

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

+3

你可以通过调用列表上的.ToArray()来轻松解决这个问题。 =) –

+0

我正在使用NET 4 – MadBoy

3

使用string.Join

var res = string.Join(",", benchmarkiUjemne); 
仍然在名单上调用 ToArray使用
相关问题