Преобразовать `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);
}
Преобразовать список строк в запятую строку С#.