将`List <string>`转换为逗号分隔的字符串


75

有没有一种快速的方法可以转换List<string>为用stringC#逗号分隔?

我是这样做的,但是也许有更快或更有效的方法吗?

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

PS:在此站点上搜索,但是大多数解决方案是针对Java或Python的


2
不,您做对了。虽然我认为你不需要做ToArray()
Yuck

2
写得更快还是执行得更快?
伊利亚·G

两者:),但显然不可能
-Ozkan

@Yuck需要转换为string[](因为我不使用.NET 4
Ozkan

@Ozkan您可能应该为当时正在使用的框架版本标记问题。我想您会发现大多数答案都将假设您使用的是最新版本。
Yuck

Answers:


116

在.NET 4中,您不需要ToArray()调用-string.Join重载即可接受IEnumerable<T>或只是IEnumerable<string>

在.NET 4之前,可能有更有效的方法来执行此操作,但是您真的需要它们吗?这实际上是代码中的瓶颈吗?

可以遍历列表,确定最终大小,分配StringBuilder恰好合适的大小,然后自己加入。这样可以避免多余的数组没有任何理由被构建-但是这样不会节省很多时间,并且会增加很多代码。


19
string.Join(“,”,myList)
Mahesh

15

以下将导致逗号分隔的列表。请务必在其中包含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);


@Ozkan请对其进行测试,并告诉我们。
Dan J

实际上,我没有检查。列表中只有两个项目,不,它们的速度一样快,但是爆炸到100,000个项目,Aggregate实际上比string.Join慢得多。很高兴知道。过去,我更喜欢使用Aggregate,但我想我会转向string。将来加入
Anthony Shaw

11

要扩展Jon Skeets的答案,代码.Net 4如下:

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

3

请遵循以下步骤:

       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()));

2
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);  
}

将字符串列表转换为逗号分隔的字符串C#。


尽管此代码可以回答问题,但提供有关如何和/或为什么解决问题的其他上下文将提高​​答案的长期价值。请阅读此操作指南以提供优质的答案。
thewaywere是

0

那就是我希望查看是否维护您的代码的方式。如果您设法找到一个更快的解决方案,那将是非常深奥的,您应该将其真正掩藏在描述其功能的方法中。

(在没有ToArray的情况下仍然可以使用)吗?


1
string.Join只能在Array的上进行strings。因此,这是必要的(因为我不使用.NET 4
Ozkan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.