2016-01-22 123 views
1

我有以下结构的列表:更好的方法来元组列表转换为字符串

Tuple<string, string> 

这样的:

enter image description here

而且我想加入列表,形成串像如下:

['A', '1'],['B', '2'], ['C', '3']... 

而我现在使用下面的代码来做:

string result = ""; 
for (int i = 0; i < list.Count; i++) 
{ 
     result += "[ '" + list[i].Item1 + "', '" + list[i].Item2 + "'],"; 
} 

该代码工作正常,但想问是否有更好的方法来做到这一点?

+0

取决于你所说的“更好”的意思。当然,除非你拥有数百万行并决定更改为'StringBuilder',否则执行效果会更好。 –

+0

哦,我的意思是更容易阅读..或者这已经是最简单的写法..? – User2012384

+3

你可以使用'string.Format'和/或Linq,但我认为这些都不是_huge_改进。 –

回答

7

你可以把它更加小巧使用LINQ,string.Joinstring.Format

result = string.Join(",", list.Select(t => string.Format("[ '{0}', '{1}']", t.Item1, t.Item2))); 
+1

矿是更好的,因为'x'>'t':) –

+0

't'如在'tuple' :) –

+0

string.Format中没有错别字,目前第一个参数是t,没有意义 –

2

Therearesomebenchmarking(注:每个字包含一个链接,但最好的参考,我认为一个是this)如何加入string。从参考

报价:

Rico Mariani,.NET性能大师,有an article在这个非常 主题。它的并不像人们怀疑的那么简单。

你可以采取特别string.Concatstring.Builder一看,他们通常比+运营商更快的。

这里我用string.Concat

string str = string.Concat(new string[] { "[ '", list[i].Item1, "', '", list[i].Item2, "']," }); 
1

可以使用linqstring interpolation这样做:

string.Join(", ", list.Select(t => $"['{t.Item1}', '{t.Item2}']")); 
1

您可以还可以使用LINQ:

var input = new List<Tuple<string, string>> { Tuple.Create("A", "1"), Tuple.Create("B", "2") }; 
var result = String.Join(",", input.Select(elem => "[ '" + elem.Item1 + "', '" + elem.Item2 + "']")); 
Console.WriteLine(result); 
1

这也可能做的伎俩为您

var input = new List<Tuple<string, string>> 
       { 
        Tuple.Create("A", "1"), 
        Tuple.Create("B", "2"), 
        Tuple.Create("C", "3") 
       }; 
string tpljoined = string.Join(", ", 
         input.Select(x => "['" + x.Item1 + "','" + x.Item2 + "']"));