从IList 或IEnumerable 创建逗号分隔列表

20 浏览
0 Comments

从IList 或IEnumerable 创建逗号分隔列表

如何以最干净的方式从 IListIEnumerable 创建一个以逗号分隔的字符串值列表?

String.Join(...) 适用于 string[],所以当像 IListIEnumerable 这样的类型不能轻易地转换为字符串数组时,使用起来可能会很麻烦。

admin 更改状态以发布 2023年5月24日
0
0 Comments

顺便提一下,.NET 4.0版本的string.Join()有一些额外的重载,可以处理IEnumerable而不仅仅是数组,其中包括一个可以处理任何类型T的方法:

public static string Join(string separator, IEnumerable values)
public static string Join(string separator, IEnumerable values)

0
0 Comments

.NET 4+

IList strings = new List{"1","2","testing"};
string joined = string.Join(",", strings);

详细和Pre .Net 4.0的解决方案

IEnumerable可以使用LINQ(.NET 3.5)非常容易地转换为字符串数组:

IEnumerable strings = ...;
string[] array = strings.ToArray();

如果需要,编写相应的帮助方法也很容易:

public static T[] ToArray(IEnumerable source)
{
    return new List(source).ToArray();
}

然后像这样调用它:

IEnumerable 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(strings).ToArray());

然而,后者有点啰嗦 🙂

这很可能是最简单的方法,并且也非常高效-有其他问题涉及其性能,包括(但不限于)此问题

从.NET 4.0开始,在string.Join中提供了更多的重载,因此您实际上可以只写:

string joined = string.Join(",", strings);

简单多了 🙂

0