将对象列表转换为一行中的字符串

本文关键字:一行 字符串 列表 对象 转换 | 更新日期: 2023-09-27 17:50:21

我有一个实现ToString()的对象列表。我需要将整个列表转换成一行中的一个字符串。我该怎么做呢?

将对象列表转换为一行中的字符串

另一个可能有所帮助的方法是string.Join(),它接受一组对象,并用您想要的任何分隔符将它们连接起来。例如:

var combined = string.Join(", ", myObjects);

将生成一个以逗号/空格分隔的字符串

假设您的意思是您的对象实现ToString,我相信这会做到:

String.Concat( objects.Select(o=>o.ToString()) );

根据dtb注释,这应该也可以工作:

String.Concat( objects );

见http://msdn.microsoft.com/en-us/library/dd991828.aspx

当然,如果你不实现ToString,你也可以这样做:
String.Concat( objects.Select(o=>o.FirstName + " " + o.LastName) );

这些都不适合我。我很困惑,因为文档明确地说他们不会工作(需要字符串,而不是对象)。但是修改@Adil的原始答案(通过查看以前的版本发现),我得到了一个工作良好的版本:

string.Join( ",", objectList.Select(c=>c.ToString()).ToArray<string>())
编辑:根据@Chris的评论,我使用的是Unity的。net版本。我使用了微软文档作为参考,所以我仍然不明白为什么这个被否决了,但是…也许这是unity特有的问题,需要这个解决方案

您可以使用String。连接连接对象列表。

string str = String.Join(",", objects);

您可以使用Linq Enumerable。选择此选项可选择字符串对象和Enumerable。聚合成一个字符串

string StringConcat = ObjectList.Select(x => { return x.StringValue; }).ToList().Aggregate((a,b) => $"{a},{b}");

示例结构:

ObjectList = List<ObjectClass>();
public class ObjectClass {
    public string StringValue { get; set; }
}