Linq的聚合函数,如何制作CSV字符串

时间:2010-09-12 22:26:22

标签: .net linq string csv aggregate

我想用Linq的Aggregate函数创建一个逗号分隔值字符串。有谁知道怎么做?

给出一个像这样的字符串数组:

var authors = new string[] {"author 1", "author 2", "author 3"};

如何获得像 作者1,作者2,作者3 这样的单个字符串? 我认为像authors.Aggregate(author => author + ",")这样的东西可能会这样做但不确定。

想法?

2 个答案:

答案 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;
}