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

Pau*_*yer 7 .net linq csv string aggregate

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

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

var authors = new string[] {"author 1", "author 2", "author 3"};
Run Code Online (Sandbox Code Playgroud)

如何获得像这个作者1,作者2,作者3的单个字符串?我想的authors.Aggregate(author => author + ",")可能会做到这一点,但不确定.

想法?

Ben*_*thy 12

如果你只想用逗号分隔它们,只需使用string.Join:

string.Join(", ", authors);
Run Code Online (Sandbox Code Playgroud)

这适用于任何IEnumerable <string>(至少在.NET 4.0中),但是从1.0开始就使用了字符串数组.


Ani*_*Ani 7

正如Bennor McCarthy所说,string.Join为了这个目的,你会更好.如果你确实想要使用Enumerable.Aggregate,那么应该这样做:

string csvString = authors.Aggregate((csvSoFar, author) => csvSoFar + ", " + author);
Run Code Online (Sandbox Code Playgroud)

这大致相当于:

string csvString = authors.First();

foreach (string author in authors.Skip(1))
{
    csvString += ", " + author;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,雅看起来加入对于这项任务来说是一个更简单的方法. (2认同)