Преобразовать `List <string>` в строку с разделителями-запятыми

Есть ли быстрый способ конвертировать List<string> в разделенный запятой string в С#?

Я делаю это так, но, возможно, есть более быстрый или более эффективный способ?

List<string> ls = new List<string>();
ls.Add("one");
ls.Add("two");
string type = string.Join(",", ls.ToArray());

PS: Поиск на этом сайте, но большинство решений для Java или Python

Ответ 1

В .NET 4 вам не нужен вызов ToArray() - string.Join перегружен, чтобы принять IEnumerable<T> или просто IEnumerable<string>.

Есть потенциально более эффективные способы сделать это до .NET 4, но вам они действительно нужны? Это на самом деле узкое место в вашем коде?

Вы можете выполнить итерацию по списку, выработать окончательный размер, выделить StringBuilder точно нужного размера, а затем выполнить соединение самостоятельно. Это позволит избежать создания дополнительного массива по какой-то причине - но это не сэкономит много времени, и это будет намного больше кода.

Ответ 2

Ниже приводится список, разделенный запятыми. Не забудьте включить оператор using для System.Linq

List<string> ls = new List<string>();
ls.Add("one");
ls.Add("two");
string type = ls.Aggregate((x,y) => x + "," + y);

даст один, два

если вам понадобится пробел после запятой, просто измените последнюю строку на string type = ls.Aggregate((x,y) => x + ", " + y);

Ответ 3

Чтобы развернуть на Jon Skeets ответ, код для этого в .Net 4 есть:

string myCommaSeperatedString = string.Join(",",ls);

Ответ 4

Следуйте этому:

       List<string> name = new List<string>();   

        name.Add("Latif");

        name.Add("Ram");

        name.Add("Adam");
        string nameOfString = (string.Join(",", name.Select(x => x.ToString()).ToArray()));

Ответ 5

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

(работает ли он без ToArray)?

Ответ 6

static void Main(string[] args)
{
   List<string> listStrings = new List<string>(){ "C#", "Asp.Net", "SQL Server", "PHP", "Angular"};
   string CommaSeparateString = GenerateCommaSeparateStringFromList(listStrings);
   Console.Write(CommaSeparateString);
   Console.ReadKey();
}

private static string GenerateCommaSeparateStringFromList(List<string> listStrings)
{
   return String.Join(",", listStrings);  
}

Преобразовать список строк в запятую строку С#.