String.Join在对象列表上

时间:2012-05-10 19:04:45

标签: c# list

在C#中,如果我有一个List<MyObj>,其中MyObj是一个带有重写ToString()方法的自定义类,可以轻松转换列表中的每个MyObj对象到一个字符串。

如何将此List<MyObj>加上分隔符,例如管道(|)到单个字符串中。

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

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

2 个答案:

答案 0 :(得分:43)

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

var x = string.Join("|", myList);

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

var x = string.Join("|", myList.Select(x => x.ToString()).ToArray());

比较可用的重载:

答案 1 :(得分:1)

Thank you, Jon Skeet。对于更复杂的对象,我使用以下内容:

string.Join("-", item.AssessmentIndexViewPoint.Select(x =>
              x.ViewPointItem.Name).ToList())