从IList<string>或IEnumerable<string>创建逗号分隔的字符串值列表的最干净的方法是什么?

string . join(…)操作在字符串[]上,因此当IList<string>或IEnumerable<string>等类型不能轻松转换为字符串数组时,处理起来很麻烦。


当前回答

我能看到的最简单的方法是使用LINQ聚合方法:

string commaSeparatedList = input.Aggregate((a, x) => a + ", " + x)

其他回答

你可以在列表和IEnumerables上使用. toarray(),然后根据需要使用String.Join()。

如果你想要连接的字符串在对象列表中,那么你也可以这样做:

var studentNames = string.Join(", ", students.Select(x => x.name));

您可以使用ToArray将IList转换为数组,然后运行字符串。在阵列上执行Join命令。

Dim strs As New List(Of String)
Dim arr As Array
arr = strs.ToArray

供你参考,.NET 4.0版本的string.Join()有一些额外的重载,用于IEnumerable,而不仅仅是数组,包括一个可以处理任何类型T的重载:

public static string Join(string separator, IEnumerable<string> values)
public static string Join<T>(string separator, IEnumerable<T> values)

特定需求时,我们应该用',用ex:

        string[] arr = { "jj", "laa", "123" };
        List<string> myList = arr.ToList();

        // 'jj', 'laa', '123'
        Console.WriteLine(string.Join(", ",
            myList.ConvertAll(m =>
                string.Format("'{0}'", m)).ToArray()));