我必须写一个C#脚本,我不得不担心三件事:性能,字符数和行数(只允许一个分号)。我需要连接一个字符串列表,这是我目前的方法(为了便于阅读,稍微修改了片段,更改了变量名称并添加了空格):
//note: stringList is of type List<string>
var builder = new StringBuilder();
string result = (from str in stringList select builder.Append("&q=" + str)).ToString();
这个问题是它有两行,所以它不起作用。有没有办法在LINQ查询中实例化字符串生成器?
此外,与简单的foreach循环相比,此查询的性能有多好? (我知道foreach不是一个选项,我只是要求将来参考)
答案 0 :(得分:6)
你担心&#34;预优化&#34;不要提前过度思考。
根据您的查询,这是正确的方法:
var result = "&q" + String.Join("&q=", stringList);
答案 1 :(得分:4)
如果您想使用StringBuilder
:
string result =
stringList
.Aggregate(new StringBuilder(), (sb, s) => sb.Append("&q=" + s))
.ToString();
简单的答案是:
string result = String.Join("", stringList.Select(s => "&q=" + s));
答案 2 :(得分:2)
您根本不需要StringBuilder,这是代码的单行替换:
string result = string.Join("", from str in stringList select "&q=" + str));