Home Articles

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

Asked
Viewed 888 times
138

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

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

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

10 Answers

  • 271

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

    您可以尝试类似 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);
        }
    }
    

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

  • 49

    也许你正在尝试做

    string combindedString = string.Join( ",", myList.ToArray() );
    

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

  • 14

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

    var result = string.Join(",", list.ToArray());
    
  • 13

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

    var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
    

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

  • 12

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

    var myString = String.Join(String.Empty, myList.ToArray());
    

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

  • 8

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

    string s = string.Join("", list);
    

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

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

  • 7

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

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

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

  • 3

    你可以使用string.Join

    List<string> list = new List<string>()
    {
        "Red",
        "Blue",
        "Green"
    };
    
    string output = string.Join(Environment.NewLine, list.ToArray());    
    Console.Write(output);
    

    The result would be:

    Red    
    Blue    
    Green
    

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

  • 2

    正如其他人所提到的,你问题的直接答案是 String.Join .

    但是,如果您需要一些操作,可以使用 Aggregate

    List<string> employees = new List<string>();
    employees.Add("e1");
    employees.Add("e2");
    employees.Add("e3");
    
    string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
    Console.WriteLine(employeesString);
    Console.ReadLine();
    
  • 0

    如果您要将列表中的项目转换为大字符串,请执行以下操作: String.Join("", myList) . 某些旧版本的框架不允许您将IEnumerable作为第二个参数传递,因此您可能需要通过调用.ToArray()将列表转换为数组 .

Related