21

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

如何List<MyObj>与分隔符连接起来,例如将管道 (|) 连接到单个字符串中。

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

对于更简单类型的列表,例如List<string>,我将其简单地执行为:String.Join("|", myList.ToArray());。有没有办法我可以做类似的事情?或者我是否被迫遍历对象列表并使用 StringBuilder 将列表中的每个对象的 ToString 附加在一起?

4

2 回答 2

60

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

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

.NET 3.5 虽然没有那么多重载string.Join- 您需要执行字符串转换并将其显式转换为数组:

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

比较可用的重载:

于 2012-05-10T19:06:27.187 回答
1

谢谢你,乔恩·斯基特。对于更复杂的对象,我使用以下内容:

string.Join("-", item.AssessmentIndexViewPoint.Select(x =>
              x.ViewPointItem.Name).ToList())
于 2021-02-25T09:11:46.957 回答