22

我有一个实现的对象列表ToString()。我需要将整个列表转换为一行中的一个字符串。我怎样才能做到这一点?

4

5 回答 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 回答