Список строк с разделителями-запятыми в C#

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

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

есть хорошая шутка?

8 ответов


строку.Присоединиться ваш друг...

var list = new List<long> {1, 2, 3, 4};
var commaSeparated = string.Join(",", list);

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>


string.Join(",", Array.ConvertAll(list.ToArray(), item => item.ToString()));

(написано непосредственно в сообщение, поэтому я, возможно, получил пару параметров неправильно, но вы поняли идею)


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

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 = ", ";
}

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


// 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"

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


    public static string CommaSeparate(this IEnumerable<string> values)
    {
        if (values.Count() == 0) return "[none]";
        return string.Join(", ", values.ToArray());
    }

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



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