Список строк с разделителями-запятыми в 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