使用LINQ连接字符串写老派最有效的方法是什么: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?
3 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
这个答案显示Aggregate
了问题中所要求的LINQ()的使用,并不适合日常使用。因为这不使用StringBuilder
它会对很长的序列产生可怕的性能。对于常规代码使用String.Join
,如另一个答案中所示
使用这样的聚合查询:
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);
这输出:
一二三
聚合是一个函数,它接受一组值并返回一个标量值。T-SQL的示例包括min,max和sum。VB和C#都支持聚合。VB和C#都支持聚合作为扩展方法。使用点符号,只需调用IEnumerable对象上的方法即可。
请记住,聚合查询会立即执行。
更多信息 - MSDN:聚合查询
如果你真的想使用CodeMonkeyKing在评论中提出的Aggregate
使用变体,它将与常规代码相同,包括对大量对象的良好性能:StringBuilder
String.Join
var res = words.Aggregate( new StringBuilder(), (current, next) => current.Append(current.Length == 0? "" : ", ").Append(next)) .ToString();
- 3 回答
- 0 关注
- 507 浏览
添加回答
举报
0/150
提交
取消