, имеющих List<int>
целых чисел (например: 1 - 3 - 4
) Как его преобразовать в строку этого типа?Преобразовать список <int> в строку значений, разделенных запятой
Например, вывод должен быть:
string values = "1,3,4";
, имеющих List<int>
целых чисел (например: 1 - 3 - 4
) Как его преобразовать в строку этого типа?Преобразовать список <int> в строку значений, разделенных запятой
Например, вывод должен быть:
string values = "1,3,4";
Другим решением было бы использование Aggregate. Это, как известно, намного медленнее, а затем другие предоставленные решения!
var ints = new List<int>{1,2,3,4};
var strings =
ints.Select(i => i.ToString(CultureInfo.InvariantCulture))
.Aggregate((s1, s2) => s1 + ", " + s2);
См. Комментарии ниже, почему вы не должны использовать его. Используйте вместо этого String.Join
или StringBuilder
.
var ints = new List<int>{1,3,4};
var stringsArray = ints.Select(i=>i.ToString()).ToArray();
var values = string.Join(",", stringsArray);
Спасибо Альбин. E для задачи восстановления, из цепочки с запятыми, мне нужно получить список
В .NET 4 ['String.Join'] (http://msdn.microsoft.com/en-us/library/dd992421.aspx) есть перегрузка с использованием' IEnumerable
@Ciupaz, для обратной задачи, используйте ['String.Split()'] (http://msdn.microsoft.com/en-us/library/system.string.split.aspx). –
public static string ToCommaString(this List<int> list)
{
if (list.Count <= 0)
return ("");
if (list.Count == 1)
return (list[0].ToString());
System.Text.StringBuilder sb = new System.Text.StringBuilder(list[0].ToString());
for (int x = 1; x < list.Count; x++)
sb.Append("," + list[x].ToString());
return (sb.ToString());
}
public static List<int> CommaStringToIntList(this string _s)
{
string[] ss = _s.Split(',');
List<int> list = new List<int>();
foreach (string s in ss)
list.Add(Int32.Parse(s));
return (list);
}
Использование:
String s = "1,2,3,4";
List<int> list = s.CommaStringToIntList();
list.Add(5);
s = list.ToCommaString();
s += ",6";
list = s.CommaStringToIntList();
Почему вы опубликовали это альтернативное решение, когда уже были предоставлены некоторые очень компактные решения с использованием string.Join()? –
-1 Самое плохое решение для создания таких строк (особенно когда список длинный). String.Join или StringBuilder - это путь. Грустно для переполнения стека, что ОП низкого качества даже не знает, как принять лучший ответ. –
@GertArnold Я согласен с тобой. Просто хотел показать другое решение и забыл упомянуть что-нибудь о производительности. Я попытался удалить этот ответ, но не могу. Я буду обновлять ответ, чтобы не использовать его. –
Это очень щедро. Удалено нисходящее. –