我如何在c#中转换一个列表到字符串?

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

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


当前回答

你可以用绳子。加入:

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

string output = string.Join(Environment.NewLine, list.ToArray());    
Console.Write(output);

结果将是:

Red    
Blue    
Green

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

其他回答

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

你可以试试绳子之类的东西。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);
    }
}

(请注意,这是未经测试的免费代码。目前我手头没有编译器。所以你会想要尝试一下。)

你有一个List<string> -如果你想把它们连接起来,就像这样

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

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

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

这很难说,但也许你想要的是:

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

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

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

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

将采用["A", "B", "C"]并产生"(A)(B)(C)"

string strs="111,222,333"
string.Join(",",strs.Split(',').ToList().Select(x=>x.PadLeft(6,'0')).ToArray());

输出

000111,000222,000333