목록을 가져 와서 쉼표로 구분 된 문자열로 변환하는 방법이 있습니까?
나는 내가 그것을 반복하고 만들 수 있다는 것을 알고 있지만 어떻게 든 여러분 중 일부는 그것을하는 더 멋진 방법이라고 생각합니까?
나는 이러한 유형의 ‘트릭’을 정말로 배우고 싶으므로 사용하는 방법에 대해 설명하거나 문서에 링크하십시오.
답변
List<int> list = ...;
string.Join(",", list.Select(n => n.ToString()).ToArray())
답변
간단한 해결책은
List<int> list = new List<int>() {1,2,3};
string.Join<int>(",", list)
방금 코드에서 사용하여 재미있게 작동했습니다.
답변
List<int> list = new List<int> { 1, 2, 3 };
Console.WriteLine(String.Join(",", list.Select(i => i.ToString()).ToArray()));
답변
이 문제의 약간 더 복잡한 버전에 대한 약 한 무량의 솔루션 (대부분이 느리거나 버그가 있거나 컴파일도하지 않음)에 대해서는이 주제에 대한 내 기사의 주석을 참조하십시오.
http://blogs.msdn.com/ericlippert/archive/2009/04/15/comma-quibbling.aspx
및 StackOverflow 설명 :
답변
추가 멋짐을 위해 IEnumerable <T>의 확장 메서드로 만들어 모든 IEnumerable에서 작동합니다.
public static class IEnumerableExtensions {
public static string BuildString<T>(this IEnumerable<T> self, string delim = ",") {
return string.Join(delim, self)
}
}
다음과 같이 사용하십시오.
List<int> list = new List<int> { 1, 2, 3 };
Console.WriteLine(list.BuildString(", "));
답변
상당히 빠른 것 같습니다.
IList<int> listItem = Enumerable.Range(0, 100000).ToList();
var result = listItem.Aggregate<int, StringBuilder, string>(new StringBuilder(), (strBuild, intVal) => { strBuild.Append(intVal); strBuild.Append(","); return strBuild; }, (strBuild) => strBuild.ToString(0, strBuild.Length - 1));
답변
내 “영리한”항목 :
List<int> list = new List<int> { 1, 2, 3 };
StringBuilder sb = new StringBuilder();
var y = list.Skip(1).Aggregate(sb.Append(x.ToString()),
(sb1, x) => sb1.AppendFormat(",{0}",x));
// A lot of mess to remove initial comma
Console.WriteLine(y.ToString().Substring(1,y.Length - 1));
조건부로 쉼표를 추가하는 방법을 찾지 못했습니다.