写老派最有效的方法是什么:
StringBuilder sb = new StringBuilder();
if (strings.Count > 0)
{
foreach (string s in strings)
{
sb.Append(s + ", ");
}
sb.Remove(sb.Length - 2, 2);
}
return sb.ToString();
...在 LINQ 中?
这个答案显示了 LINQ 的用法(Aggregate
)按照问题中的要求,不适合日常使用。因为这不使用StringBuilder
对于很长的序列来说,它的性能会很糟糕。用于常规代码使用String.Join
如另一个所示answer
使用这样的聚合查询:
string[] words = { "one", "two", "three" };
var res = words.Aggregate(
"", // start with empty string to handle empty list case.
(current, next) => current + ", " + next);
Console.WriteLine(res);
这输出:
, one, two, three
聚合是一个函数,它接受值的集合并返回标量值。 T-SQL 的示例包括最小值、最大值和总和。 VB 和 C# 都支持聚合。 VB 和 C# 都支持聚合作为扩展方法。使用点表示法,人们只需调用一个方法IE可枚举 object.
请记住,聚合查询会立即执行。
更多信息 -MSDN:聚合查询
如果你真的想使用Aggregate
使用变体使用StringBuilder
在评论中提出代码美猴王这与常规代码大致相同String.Join
包括对大量对象的良好性能:
var res = words.Aggregate(
new StringBuilder(),
(current, next) => current.Append(current.Length == 0? "" : ", ").Append(next))
.ToString();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)