写老派的最有效方法是什么:
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中?
该答案显示Aggregate了问题中所要求的LINQ()的用法,并不打算用于日常使用。因为它不使用,StringBuilder所以在很长的序列中将具有可怕的性能。对于常规代码String.Join,如其他答案所示
Aggregate
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的注释中建议的Aggregateuse变体,它将与常规代码相同,包括对大量对象的良好性能:StringBuilderString.Join
var res = words.Aggregate( new StringBuilder(), (current, next) => current.Append(current.Length == 0? "" : ", ").Append(next)) .ToString();