String.Join在对象列表上

use*_*753 13 c# list

在C#中,如果我有一个List<MyObj>where MyObj是一个带有重写ToString()方法的自定义类,MyObj那么List 中的每个对象都可以很容易地转换为字符串.

我怎样才能加入这个List<MyObj>有一个分隔符,例如管道(|)合并为一个字符串.

所以,如果我有3个MyObj对象,其ToString方法将分别产生AAA,BBB,CCC.我会创建一个单独的字符串:AAA | BBB | CCC.

对于更简单类型的列表,例如List<string>我执行此操作简单如下:String.Join("|",myList.ToArray());.有没有办法可以做类似的事情?或者我是否被迫迭代对象列表并使用字符串生成器将每个对象的ToString一起追加到列表中?

Jon*_*eet 44

在.NET 4中,您可以使用:

var x = string.Join("|", myList);
Run Code Online (Sandbox Code Playgroud)

.NET 3.5没有尽可能多的重载string.Join- 您需要执行字符串转换并将其明确地转换为数组:

var x = string.Join("|", myList.Select(x => x.ToString()).ToArray());
Run Code Online (Sandbox Code Playgroud)

比较可用的重载: