将对象列表转换为一行中的字符串
本文关键字:一行 字符串 列表 对象 转换 | 更新日期: 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; }
}