2010-09-12 39 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