我们假设我有一个字符串集合,如下所示:
IList<string> myList = new List<string>(){"one", "two", "three"};
Run Code Online (Sandbox Code Playgroud)
使用myList.Aggregate我希望最终得到"'one','two','three'"(包括单引号)
有人只有使用聚合函数才能做到这一点吗?我正在思考一些问题
myList.Aggregate((increment, seed) => string.Concat(increment, ", ", seed));
Run Code Online (Sandbox Code Playgroud)
但这只是解决方案的一半.
有什么理由使用Aggregate而不是更简单string.Join?
string joined = string.Join(", ", myCollection.Select(x => "'" + x + "'"));
Run Code Online (Sandbox Code Playgroud)
(ToArray如果您使用的是.NET 3.5,请添加一个电话.)
你可以实现string.Join使用Aggregate(理想情况下使用a StringBuilder),但它并不是非常令人愉快.假设非空集合,我认为应该这样做:
string csv = myCollection.Aggregate(new StringBuilder("'"),
(sb, x) => sb.AppendFormat("{0}', '"),
sb => { sb.Length -= 3;
return sb.ToString(); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |