我想用Linq的Aggregate函数创建一个逗号分隔值字符串。有谁知道怎么做?
给出一个像这样的字符串数组:
var authors = new string[] {"author 1", "author 2", "author 3"};
如何获得像 作者1,作者2,作者3 这样的单个字符串?
我认为像authors.Aggregate(author => author + ",")
这样的东西可能会这样做但不确定。
想法?
答案 0 :(得分:12)
如果你只想用逗号分隔它们,只需使用string.Join:
string.Join(", ", authors);
这适用于任何IEnumerable< string> (至少在.NET 4.0中),但从1.0开始就使用了字符串数组。
答案 1 :(得分:6)
正如Bennor McCarthy所说,为了这个目的,你最好不要使用string.Join
。如果你确实想要使用Enumerable.Aggregate
,那应该这样做:
string csvString = authors.Aggregate((csvSoFar, author) => csvSoFar + ", " + author);
这大致相当于:
string csvString = authors.First();
foreach (string author in authors.Skip(1))
{
csvString += ", " + author;
}