Перечислите <long>в запятую строку в C # - PullRequest
15 голосов
/ 02 декабря 2010

Это часто возникает.У меня есть список, и я хочу перейти к строке с разделителями-запятыми всех элементов в списке, которые я могу использовать в SQL.

Какой самый элегантный способ сделать это в C #?Итерирование по всем из них хорошо, за исключением того, что первый или последний элемент должен иметь специальный регистр, так как я не хочу, чтобы начальные или конечные запятые были.

Ответы [ 8 ]

29 голосов
/ 02 декабря 2010

строка. Джойн твой друг ...

var list = new List<long> {1, 2, 3, 4};
var commaSeparated = string.Join(",", list);
13 голосов
/ 02 декабря 2010
List<long> items = // init here
string result = string.Join(", ", items.Select(i => i.ToString()).ToArray());

Не уверен, что это самый элегантный способ, но это 1 вкладыш!

Теперь есть также string.Join, который принимает IEnumerable<T>, поэтому он становится еще короче:

string result = string.Join(", ", items);

Благодаря выводу типа вам не нужно указывать Join<long>

3 голосов
/ 02 декабря 2010
string.Join(",", Array.ConvertAll(list.ToArray(), item => item.ToString()));

(записано прямо в пост, так что, возможно, я неправильно понял пару параметров, но вы поняли)

2 голосов
/ 02 марта 2011
// Content IDs
List<long> cIds = new List<long>();
cIds.Add(1);
cIds.Add(2);
cIds.Add(1);
cIds.Add(3);
cIds.Add(3);
string ids = string.Join(",", cIds.Distinct().Select(x => x.ToString()).ToArray());
// The example return the following output:
// ids = "1,2,3"

возвращает список уникальных предметов, разделенных запятой.

2 голосов
/ 02 декабря 2010

Если бы вы делали это вручную, у вас не должно быть особых случаев для первого и последнего значения, вместо этого вы можете просто сделать это:

List<long> junk = // have some values here;
string separator = string.Empty;
string list = string.Empty;

foreach(long john in junk)
{
    list += separator + john.ToString();
    separator = ", ";
}

Не говоря, что вы должны это делать, расценивайте это как комментарий.

1 голос
/ 02 декабря 2010
    public static string CommaSeparate(this IEnumerable<string> values)
    {
        if (values.Count() == 0) return "[none]";
        return string.Join(", ", values.ToArray());
    }

Это метод расширения, который я использую для этого в своих приложениях. Он основан на IEnumerable, но должен быть похож на List.

0 голосов
/ 21 сентября 2012
List<long> list =new List<long>(){1,2,3,4,5,6,7};

StringBuilder str =new StringBuilder();    

foreach(var i in list)
{
str.Append(i).Append(',');
}

Это добавит длинные значения в (stringBuilder) str как

Ans: str = 1,2,3,4,5,6,7

0 голосов
/ 02 декабря 2010

Я верю String.Join делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...