Какой самый простой способ преобразовать список целых чисел в строку чисел через запятую в C # - PullRequest
3 голосов
/ 09 января 2010

Я ищу один вкладыш здесь, начиная с:

int [] a = {1, 2, 3};
List<int> l = new List<int>(a);

и заканчивается

String s = "1,2,3";

Ответы [ 8 ]

9 голосов
/ 09 января 2010
String s = String.Join(",", a.Select(i => i.ToString()).ToArray());
6 голосов
/ 09 января 2010
string s = string.Join(",", Array.ConvertAll(a, i => i.ToString()));

или в .NET 4.0 вы можете попробовать (хотя я не уверен, что он скомпилируется):

string s = string.Join(",", a);
4 голосов
/ 09 января 2010
  String.Join(",", l);
2 голосов
/ 09 января 2010
int[] array = {1,2,3};

string delimited = string.Join(",", array);
2 голосов
/ 09 января 2010
string.Join(",", l.ConvertAll(i => i.ToString()).ToArray());

Это предполагает, что вы компилируете под .NET 3.5 с Linq.

1 голос
/ 09 января 2010
l.Select(i => i.ToString()).Aggregate((s1, s2) => s1 + "," + s2)
0 голосов
/ 09 января 2010

Я знаю, что вы ищете один вкладыш, но если вы создадите метод расширения, все последующее использование будет одним вкладышем.Я использую этот метод.


public static string ToDelimitedString<T>(this IEnumerable<T> items, string delimiter)
{
    StringBuilder joinedItems = new StringBuilder();
    foreach (T item in items)
    {
        if (joinedItems.Length > 0)
            joinedItems.Append(delimiter);

        joinedItems.Append(item);
    }

    return joinedItems.ToString();
}

Для вашего списка это становится: l.ToDelimitedString(",") Я добавил перегрузку, которая всегда использует запятую в качестве разделителя для удобства.

0 голосов
/ 09 января 2010

Еще один способ сделать это:

string s = a.Aggregate("", (acc, n) => acc == "" ? n.ToString() : acc + "," + n.ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...