2010-09-12 36 views
6

我想用Linq的Aggregate函数制作逗号分隔的值字符串。有人知道怎么做吗?Linq的聚合函数,如何制作一个CSV字符串

考虑到字符串数组是这样的:

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

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

想法?

+0

的[LINQ聚合算法解释(可能的复制http://stackoverflow.com/questions/7105505/linq-aggregate-algorithm-explained) – Jamiec 2015-10-05 14:49:38

回答

11

如果你只希望用逗号将它们分开,只是使用的string.join:

string.Join(", ", authors); 

这将任何的IEnumerable <字符串工作>(至少在.NET 4.0),但工作自1.0以来的字符串数组。

+0

O很酷,我想Aggregate并不是我所需要的。看起来加入是正确的。我会试试这个......谢谢。 – 2010-09-12 22:37:54

+0

良好的通话 - 我忘了这种方法! – ColinE 2011-07-05 08:15:02

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; 
} 
+2

谢谢,雅看起来像加入很多是这个任务更简单的方法。 – 2010-09-12 22:38:47