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

use*_*322 10 c# string list

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

eou*_*3hf 24

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

var combined = string.Join(", ", myObjects);
Run Code Online (Sandbox Code Playgroud)

将使逗号/空格分隔的字符串.

  • 最初的问题提到对象实现了`ToString()`.所以,您要么必须在输入类中添加`ToString()`功能(如果可以的话),或者您可以使用linq将对象投影到`string`s,la`string.Join(", ",myObjects.Select(a => MyStringMethod(a)));`. (2认同)

Aar*_*nLS 17

假设你的意思是你的对象实现了ToString,我相信这样做会:

String.Concat( objects.Select(o=>o.ToString()) );
Run Code Online (Sandbox Code Playgroud)

根据dtb说明,这应该也可以:

String.Concat( objects );
Run Code Online (Sandbox Code Playgroud)

请参阅http://msdn.microsoft.com/en-us/library/dd991828.aspx

当然,如果你没有实现ToString,你也可以这样做:

String.Concat( objects.Select(o=>o.FirstName + " " + o.LastName) );
Run Code Online (Sandbox Code Playgroud)

  • `.Select(o => o.ToString())`是不必要的,因为[String.Concat方法](http://msdn.microsoft.com/en-us/library/dd991828.aspx)有一个重载接受IEnumerable <T>并对每个项目应用`.ToString`.该方法还可以正确处理您的解决方案没有的"null"值. (5认同)

Ada*_*dam 7

这些都不对我有用。我很困惑,因为文档明确表示它们将不起作用(需要字符串,而不是对象)。但是修改@Adil的原始答案(通过查看以前的修订版本发现),我得到了一个可以正常工作的版本:

string.Join( ",", objectList.Select(c=>c.ToString()).ToArray<string>())
Run Code Online (Sandbox Code Playgroud)

编辑:根据@克里斯的评论-我正在使用Unity的.NET版本。我使用Microsoft文档作为参考,所以我仍然感到困惑,为什么它被否决了,但是...也许这是一个特定于Unity的问题,需要此解决方案。

  • 这在Unity中对我有效,而其他答案没有。 (2认同)

Adi*_*dil 6

您可以使用String.Join来连接对象列表.

string str = String.Join(",", objects);
Run Code Online (Sandbox Code Playgroud)