2010-09-12 35 views
6

Tôi muốn tạo chuỗi giá trị phân cách bằng dấu phẩy bằng hàm Tổng hợp của LINQ. Bất cứ ai biết làm thế nào để làm điều này?Chức năng tổng hợp của LINQ, Cách tạo chuỗi CSV

Với một mảng các chuỗi như thế này:

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

Làm thế nào để tôi nhận được một chuỗi duy nhất như thế này tác giả 1, tác giả 2, tác giả 3? Tôi đang suy nghĩ một cái gì đó như authors.Aggregate(author => author + ",") có thể làm điều này nhưng không chắc chắn.

Ý tưởng?

+0

có thể trùng lặp của [LINQ tổng hợp thuật toán giải thích] (http://stackoverflow.com/câu hỏi/7105505/linq-aggregate-thuật toán-giải thích) – Jamiec

Trả lời

11

Nếu bạn chỉ tìm cách để bằng dấu phẩy tách chúng, chỉ cần sử dụng string.Join:

string.Join(", ", authors); 

này sẽ làm việc với bất kỳ < chuỗi IEnumerable> (ít nhất là trong .NET 4.0), nhưng đã làm việc với mảng chuỗi từ 1.0.

+0

O Cool, tôi đoán Tổng hợp không thực sự là những gì tôi cần. Có vẻ như Tham gia là điều đúng đắn. Tôi sẽ thử ... cảm ơn. –

+0

Cuộc gọi tốt - Tôi quên mất phương pháp đó! – ColinE

6

Như Bennor McCarthy nói, bạn nên sử dụng tốt hơn string.Join cho mục đích này. Nếu bạn thực sự muốn sử dụng Enumerable.Aggregate tuy nhiên, điều này sẽ làm:

string csvString = authors.Aggregate((csvSoFar, author) => csvSoFar + ", " + author); 

Đây là tương đương với:

string csvString = authors.First(); 

foreach (string author in authors.Skip(1)) 
{ 
    csvString += ", " + author; 
} 
+2

Cảm ơn, Ya trông giống như Tham gia là một cách tiếp cận đơn giản hơn nhiều cho nhiệm vụ này. –

Các vấn đề liên quan