2010-08-12 14 views
27

Tam sayıların bir listesi var ve bunu, her bir sayının virgülle ayrılmış olduğu bir dizeye dönüştürmek istiyorum.Listeyi bir CSV dizesine dönüştürmek için LINQ kullanma

benim liste olsaydı Şimdiye kadar örnek:

1 
2 
3 
4 
5 

My beklenen çıkışı olacaktır:

1, 2, 3, 4, 5 

LINQ kullanarak bu mümkün mü?

sayesinde .NET 2/3

var csv = string.Join(", ", list.Select(i => i.ToString()).ToArray()); 

ya da (.NET 4.0) ise

cevap

92

var csv = string.Join(", ", list); 
+0

eğer çalışmaz: C# 4.0 ile başlayarak

// Can be int[], List<int>, IEnumerable<int>, ... int[] myIntegerList = ...; string myCSV = string.Join(", ", myIntegerList.Select(i => i.ToString()).ToArray()); 

, ekstra MumboJumbo hepsi otomatik olarak çalışır, artık gerekli değildir '' '' soruda belirtilen tam sayıların bir listesidir. – Timwi

+0

@Timwi - aslında, .NET 4'te çalışıyor, artık bir diziye ihtiyaç duymadığınızı, herhangi sayılabilir bir çalışmanın olacağını unutmuşum. – tvanfosson

+0

Evet, yanlış bilgilendirildim. Downvote geri çekildi. – Timwi

3

bu aradığınız şey bu mu?

// Can be int[], List<int>, IEnumerable<int>, ... 
int[] myIntegerList = ...; 

string myCSV = string.Join(", ", myIntegerList); 
+0

Aslında, liste 'IEnumerable' olmalıdır, çünkü diğer tüm kapsayıcılar (sizden bahsetmişlerdir ve siz de değilsiniz) IEnumerable'ı ve 'Seçin 'bir IENumerable' yöntemidir – abatishchev

+0

@abatishchev: Diğer kapsayıcılar * 'IEnumerable' , doğru. Yanlış dediğiniz şey, özellikle “listenin IEnumerable” olması gerekir, fakat “' '' '' IEnumerable'ın bir metodudur '' (ve eğer IEnumerable 'dediyseniz bile, yine de yanlış olmak). Bu bir uzantı yöntemidir. – Timwi

+0

Aslında, dizge olarak seç bile " (dizgi, IEnumerable )" dizesi olarak gerekli değildir, her öğe otomatik olarak bir dizeye numaralandırılır. – tvanfosson

2
string csv = String.Join(", ", list.Select(i=> i.ToString()).ToArray()); 
+0

Teknik olarak, bu cevap, soruda belirtildiği gibi beklenen çıkışı üretmiyor ;-) – Timwi

+0

Tamam, fazladan boşluk ekledim .... –

0
String.Join(", ", list); //in .NET 4.0 

ve

String.Join(", ", list   
    .Select(i => i.ToString()).ToArray()) //in .NET 3.5 and below 
+0

Neden düşüş var? –

+0

ikinci ifadeniz anlamsızdır. size bir eleman ile bir dizi dizisi verecektir. –

+0

@Scott'un testlerimden ek bir parantezi vardı, düzeltildi. –

İlgili konular