将列表转换为C#中的字符串

IAd*_*ter 166 .net c# string list

如何将列表转换为C#中的字符串?

当我toString在List对象上执行时,我得到:

System.Collections.Generic.List`1 [System.String]

Øyv*_*hen 334

也许你正在尝试做

string combindedString = string.Join( ",", myList.ToArray() );
Run Code Online (Sandbox Code Playgroud)

您可以将","替换为要在列表中拆分元素的内容.

  • 我最近使用它,它的工作原理 - 只省略.ToArray() (9认同)
  • 你的意思是字符串combindedString = string.Join(",",myList.ToArray()); (3认同)
  • @AdrianK您是正确的,因为.Net 4.0添加了传递任何IEnumerable <string>的功能。但是4.0版于2010年4月发布,在此问题和答案发布之前,所以这里的人们可能还没有意识到(除了下面的一些内容) (3认同)
  • 参数'2':无法从'System.Collections.Generic.List <string>'转换为'string []' (2认同)

Cha*_*ion 53

我将以我的直觉感受并假设您想要连接调用ToString列表中每个元素的结果.

var result = string.Join(",", list.ToArray());
Run Code Online (Sandbox Code Playgroud)

  • 您不必再使用`.ToArray()`。 (2认同)

ean*_*son 15

你可以使用string.Join:

List<string> list = new List<string>()
{
    "Red",
    "Blue",
    "Green"
};

string output = string.Join(Environment.NewLine, list.ToArray());    
Console.Write(output);
Run Code Online (Sandbox Code Playgroud)

结果将是:

Red    
Blue    
Green
Run Code Online (Sandbox Code Playgroud)

作为替代方案Environment.NewLine,您可以使用您选择的基于字符串的行分隔符替换它.


Jam*_*unt 14

如果你想要比简单连接稍微复杂的东西,你可以使用LINQ,例如

var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
Run Code Online (Sandbox Code Playgroud)

取["A","B","C"]并产生"(a)(b)(c)"


Mar*_*son 13

String.Join(" ", myList)String.Join(" ", myList.ToArray()).第一个参数是子串之间的分隔符.

var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"
Run Code Online (Sandbox Code Playgroud)

根据您的.NET版本,您可能需要先在列表中使用ToArray()..


Mar*_*ell 9

你有List<string>- 所以如果你想要它们连接起来,就像这样

string s = string.Join("", list);
Run Code Online (Sandbox Code Playgroud)

会工作(至少在.NET 4.0中).第一个参数是分隔符.所以你也可以用逗号分隔等.

您可能还希望使用StringBuilder来运行连接,而不是形成列表.


Dav*_*vid 8

.ToString()引用类型的方法通常会解析为System.Object.ToString()除非您在派生类型中覆盖它(可能使用内置类型的扩展方法).此方法的默认行为是输出调用它的类型的名称.所以你所看到的是预期的行为.

你可以尝试一下这样string.Join(", ", myList.ToArray());做.这是一个额外的步骤,但它可以放在一个扩展方法System.Collections.Generic.List<T>,使它更容易一点.像这样的东西:

public static class GenericListExtensions
{
    public static string ToString<T>(this IList<T> list)
    {
        return string.Join(", ", list);
    }
}
Run Code Online (Sandbox Code Playgroud)

(请注意,这是免费和未经测试的代码.目前我没有编译器.所以你需要稍微试验一下.)


Dan*_*fer 6

很难说,但也许您正在寻找类似的东西:

var myString = String.Join(String.Empty, myList.ToArray());
Run Code Online (Sandbox Code Playgroud)

这将隐式调用列表中每个项目的 ToString() 方法并将它们连接起来。