从IList 或IEnumerable 创建逗号分隔列表
从IList 或IEnumerable 创建逗号分隔列表
如何以最干净的方式从 IList
或 IEnumerable
创建一个以逗号分隔的字符串值列表?
String.Join(...)
适用于 string[]
,所以当像 IList
或 IEnumerable
这样的类型不能轻易地转换为字符串数组时,使用起来可能会很麻烦。
admin 更改状态以发布 2023年5月24日
顺便提一下,.NET 4.0版本的string.Join()
有一些额外的重载,可以处理IEnumerable
而不仅仅是数组,其中包括一个可以处理任何类型T
的方法:
public static string Join(string separator, IEnumerablevalues) public static string Join (string separator, IEnumerable values)
.NET 4+
IListstrings = new List {"1","2","testing"}; string joined = string.Join(",", strings);
详细和Pre .Net 4.0的解决方案
IEnumerable
可以使用LINQ(.NET 3.5)非常容易地转换为字符串数组:
IEnumerablestrings = ...; string[] array = strings.ToArray();
如果需要,编写相应的帮助方法也很容易:
public static T[] ToArray(IEnumerablesource) { return new List (source).ToArray(); }
然后像这样调用它:
IEnumerablestrings = ...; 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(strings).ToArray());
然而,后者有点啰嗦 🙂
这很可能是最简单的方法,并且也非常高效-有其他问题涉及其性能,包括(但不限于)此问题。
从.NET 4.0开始,在string.Join
中提供了更多的重载,因此您实际上可以只写:
string joined = string.Join(",", strings);
简单多了 🙂