2010-04-21 29 views

Trả lời

54

Tại sao không chỉ cần đi với (String.Join Method)

string joined = String.Join(",", data.ToArray()); 

Nhưng nếu nó đã được LINQ, bạn có thể thử

string joinedLinq = data.Aggregate((i, j) => i + "," + j); 
+3

xem cảnh báo của tôi về Tổng hợp bên dưới ... –

+0

String.Join chính xác là những gì tôi cần! – Melursus

+4

@Melurus, cũng lưu ý rằng mới trong .NET 4, các cuộc gọi đến. ToArray() là không cần thiết, cũng không cần phải là một tập hợp các chuỗi. string.Join có quá tải chấp nhận 'IEnumerable '. –

1

Bạn có thể sử dụng tổng hợp khi bạn cần phải tham gia một danh sách vào một đối tượng tổng hợp duy nhất.

string s = ""; 
if(data.Count > 0) 
    s = data.Aggregate((a, b) => a + ',' + b); 
11

Bạn có thể bị cám dỗ để sử dụng tổng hợp() nếu bạn đang gắn bó với LINQ

IList<int> data = new List<int>(); 

data.Add(123); 
data.Add(456); 

var result = data.Select(x => x.ToString()).Aggregate((a,b) => a + "," + b); 

tôi sẽ không khuyên bạn nên này bởi vì như tôi phát hiện ra một cách khó khăn này sẽ thất bại nếu danh sách chứa 0 mục - hoặc là nó nếu nó chỉ có 1 mục. Tôi quên, nhưng nó không thành công tất cả như nhau :-)

String.Join(...) is the best way 

Trong ví dụ trên, nơi datatype KHÔNG phải là một chuỗi bạn có thể làm điều này:

string.Join(",", data.Select(x => x.ToString()).ToArray()) 
+3

Nó sẽ ném nếu enumerable không có yếu tố. Kiểm tra đếm == 0. –

+0

Như Anthony Pegram đã viết 'String.Join (delimiter, IEnumerable )' là giải pháp tốt nhất trong .NET 4! –

3

Như Anthony Pegram viết String.Join<T>(delimiter, IEnumerable<T>) là tốt nhất giải pháp trong .NET 4!

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