我有一个实现的对象列表ToString()
。我需要将整个列表转换为一行中的一个字符串。我怎样才能做到这一点?
问问题
62656 次
5 回答
39
另一种可能会有所帮助的方法是string.Join()
,它采用一组对象并将它们与您想要的任何分隔符连接起来。例如:
var combined = string.Join(", ", myObjects);
将生成一个以逗号/空格分隔的字符串。
于 2013-01-02T17:33:30.887 回答
26
假设你的意思是你的对象实现 ToString,我相信这会做到:
String.Concat( objects.Select(o=>o.ToString()) );
根据 dtb note,这也应该有效:
String.Concat( objects );
请参阅http://msdn.microsoft.com/en-us/library/dd991828.aspx
当然,如果你不实现 ToString,你也可以这样做:
String.Concat( objects.Select(o=>o.FirstName + " " + o.LastName) );
于 2013-01-02T17:30:44.833 回答
8
您可以使用String.Join连接对象列表。
string str = String.Join(",", objects);
于 2013-01-02T17:32:44.393 回答
7
这些都不适合我。我很困惑,因为文档明确表示它们不起作用(需要字符串,而不是对象)。但是修改@Adil 的原始答案(通过查看以前的修订版找到),我得到了一个运行良好的版本:
string.Join( ",", objectList.Select(c=>c.ToString()).ToArray<string>())
编辑:根据@Chris 的评论 - 我正在使用 Unity 的 .NET 版本。我使用微软文档作为参考,所以我仍然很困惑为什么这被否决了,但是......也许这是一个需要这个解决方案的 Unity 特定问题。
于 2016-06-27T15:54:36.463 回答
0
您可以使用 Linq Enumerable.Select选择一个字符串对象并将Enumerable.Aggregate转换为一个字符串。
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; }
}
于 2021-11-06T06:12:11.417 回答