在C#中,如果我有一个List<MyObj>
,其中MyObj
是一个带有重写ToString()
方法的自定义类,可以轻松转换列表中的每个MyObj
对象到一个字符串。
如何将此List<MyObj>
加上分隔符,例如管道(|)到单个字符串中。
所以,如果我有3个MyObj对象,其ToString方法将分别产生AAA,BBB,CCC。我会创建一个单独的字符串:AAA | BBB | CCC。
对于更简单类型的列表,例如List<string>
,我执行此操作只需:String.Join("|",myList.ToArray());
。有没有办法可以做类似的事情?或者我是否被迫迭代对象列表并使用字符串生成器将每个对象的ToString一起追加到列表中?
答案 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())