2010-08-12 2 views
27

나는 정수 목록을 가지고 있으며 각 숫자를 쉼표로 구분하여 문자열로 변환 할 수 있기를 원합니다.LINQ를 사용하여 목록을 CSV 문자열로 변환

내 목록이 있다면 지금까지 예 :

1 
2 
3 
4 
5 

내 예상 출력은 다음과 같습니다

1, 2, 3, 4, 5 

는 LINQ를 사용하여이 가능합니까?

감사 .NET 2/3

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

또는 (.NET 4.0)에서

답변

92

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

을 경우 작동하지 않습니다 : C# 4.0을 시작으로

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

는 여분의 mumbojumbo는 모두 자동으로 작동, 더 이상 필요하지 않습니다 'list'는 질문에 지정된 정수 목록입니다. – Timwi

+0

@ Timwi - 실제로 .NET 4에서는 그렇습니다. 더 이상 배열이 필요 없다는 사실을 잊었습니다. 어떤 열거 형도 작동합니다. – tvanfosson

+0

네, 잘못 알고 있습니다. Downvote retracted. – Timwi

3

이 당신이 찾고있는 무엇인가?

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

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

다른 모든 컨테이너 (당신이 언급 한 것뿐 아니라)는 IEnumerable을 상속 받았고 Select는 IEnumerable의 메소드이기 때문에 IEnumerable이어야합니다. – abatishchev

+0

@abatishchev : 다른 컨테이너는 * IEnumerable'을 구현합니다. , 맞아. 당신이 잘못한 부분, 특히 "IEnumerable"이 있어야합니다. 또한 "Select"는'IEnumerable'의 메소드입니다 (그리고'IEnumerable '라고 말했더라도 여전히 틀리다). 확장 방법입니다. – Timwi

+0

실제로 select as string은 'Join (string, IEnumerable )'으로 열거 형의 각 항목을 자동으로 문자열로 변환하므로 필요하지 않습니다. – tvanfosson

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

기술적으로이 대답은 질문에 지정된대로 예상 출력을 생성하지 않습니다. – Timwi

+0

그래, 추가 공간을 추가했습니다 .... –

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

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

왜 downvote? –

+0

두 번째 문장은 의미가 없습니다. 하나의 요소를 가진 문자열 배열을 제공합니다. –

+0

@Scott은 내 테스트에서 여분의 흉터를 가지고있었습니다. –

관련 문제