2010-06-28 2 views
35

Можно создать дубликат:
most elegant way to return a string from List<int>Список Преобразовать <int> в ограниченном списке строк

Я не уверен, что самый простой способ сделать это. Я просто хочу добавить a; между каждым значением и выплюнуть его как одну строку. Я не вижу, что вы можете сделать это с помощью ToString(). Мне нужно было бы выполнить цикл и создать stringbuilder и добавить & добавить «;».

+0

жаль, что это список не Перечислите PositiveGuy

+0

Мне нужно преобразовать список в delmited строку. Итак, «123; 343; 222» – PositiveGuy

+0

@coffeeaddict: Это нормально, чтобы отредактировать исходный вопрос. Это лучше, чем надеяться, что люди прочтут все подробности в комментариях. – DOK

ответ

84

ОБНОВЛЕНО использовать List<int> вместо List<string>

Использование string.Join:

List<int> data = ..; 
var result = string.Join(";", data); // (.NET 4.0 only) 
var result = string.Join(";", data.Select(x => x.ToString()).ToArray()); // (.NET 3.5) 
+0

Извините, я изменил вопрос, моя ошибка – PositiveGuy

+0

Я обновил ответ на матч. –

+0

+1 для. Net 4 перечислимая строка.Join –

4

Просто используйте присоединиться

string combinedString = String.Join(";", arrayName); 
3
List<String> list = new List<String>() { "A", "B", "C", "D", "E" }; 
String joindString1 = String.Join(";", list.ToArray()); 
String joindString2 = list.Aggregate((s1, s2) => s1 + ";" + s2); 
2

Вы также можете использовать Enumerable.Aggregate, который может обеспечить дополнительную гибкость.

var data = new List<int> { 1,2,3 }; 
var sb = new StringBuilder(100); 

// do some other stuff with sb 

sb = data.Aggregate(sb, (b, d) => b.Append(d).Append(';')); 
if(data.Count > 0) sb.Length--; 

//do some more stuff with sb 

var str = sb.ToString(); 
Смежные вопросы