如何使用Linq聚合单引号
本文关键字:单引号 Linq 何使用 | 更新日期: 2023-09-27 18:14:06
假设我有一个字符串集合,如下所示:
IList<string> myList = new List<string>(){"one", "two", "three"};
使用myList.Aggregate
,我想以"'one', 'two', 'three'"(包括单引号)结束
是否有人有这样做的一个圆滑的方式,只使用聚合函数?我在想
这几行myList.Aggregate((increment, seed) => string.Concat(increment, ", ", seed));
为什么使用Aggregate
而不是更简单的string.Join
呢?
string joined = string.Join(", ", myCollection.Select(x => "'" + x + "'"));
(如果你使用。net 3.5,添加ToArray
调用)
您可以使用Aggregate
实现string.Join
(理想情况下使用StringBuilder
),但这不是非常令人愉快。假设一个非空集合,I 认为 this应该可以做到:
string csv = myCollection.Aggregate(new StringBuilder("'"),
(sb, x) => sb.AppendFormat("{0}', '"),
sb => { sb.Length -= 3;
return sb.ToString(); });
既然您指定"只使用聚合函数",那么:
myCollection.Aggregate(string.Empty, (soFar, next) =>
soFar + (soFar == string.Empty ? soFar : ", ")
+ "'" + next + "'")
(或)
myCollection.Aggregate(string.Empty, (soFar, next) =>
string.Format("{0}{1}'{2}'",
soFar, soFar == string.Empty ? soFar : ", ", next))
以这种方式使用Aggregate
进行字符串连接是确实是低效的。
EDIT:已更新以删除前导,
。