从IList<string>
或IEnumerable<string>
中创建一个逗号分隔的字符串列表的最简洁方法是什么?
String.Join(...)
对string[]
进行操作,所以当IList<string>
或IEnumerable<string>
等类型不能轻易转换为字符串数组时,操作就会很麻烦了。
.NET 4+
IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);
.Net 4.0解决方案的细节和前期。
IEnumerable<string>
可以通过LINQ(.NET 3.5)非常容易地转换成字符串数组。
IEnumerable<string> strings = ...;
string[] array = strings.ToArray();
如果你需要的话,写出相应的辅助方法也很容易。
public static T[] ToArray(IEnumerable<T> source)
{
return new List<T>(source).ToArray();
}
然后像这样调用它。
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
然后你就可以调用string.Join
。当然,你不一定要*使用辅助方法。
// C# 3 and .NET 3.5 way:
string joined = string.Join(",", strings.ToArray());
// C# 2 and .NET 2.0 way:
string joined = string.Join(",", new List<string>(strings).ToArray());
虽然后者有点拗口 :)
这可能是最简单的方法,而且性能也相当好--还有其他关于性能到底如何的问题,包括(但不限于)这个。
从.NET 4.0开始,在string.Join
中有更多的重载,所以你实际上可以直接写。
string joined = string.Join(",", strings);
简单多了 :)
你可以在Lists
和IEnumerables
上使用.ToArray()
,然后按照你的要求使用String.Join()
。