我必须写一个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不是一个选项,我只是要求将来参考)
你担心"预优化",不要提前想得太多。
就您的查询而言,这是正确的方法:
var result = "&q" + String.Join("&q=", stringList);
如果您想使用StringBuilder
:,这是一个不错的选择
string result =
stringList
.Aggregate(new StringBuilder(), (sb, s) => sb.Append("&q=" + s))
.ToString();
简单的答案是:
string result = String.Join("", stringList.Select(s => "&q=" + s));
您根本不需要StringBuilder,这是对代码的一行替换:
string result = string.Join("", from str in stringList select "&q=" + str));