Answers:
也许您正在尝试做
string combindedString = string.Join( ",", myList.ToArray() );
您可以将“,”替换为您要分割列表中元素的对象。
编辑:如评论中所述,您也可以
string combindedString = string.Join( ",", myList);
参考:
Join<T>(String, IEnumerable<T>)
Concatenates the members of a collection, using the specified separator between each member.
您可以使用string.Join
:
List<string> list = new List<string>()
{
"Red",
"Blue",
"Green"
};
string output = string.Join(Environment.NewLine, list.ToArray());
Console.Write(output);
结果将是:
Red
Blue
Green
作为替代Environment.NewLine
,您可以将其替换为您选择的基于字符串的行分隔符。
如果您想要比简单的连接稍微复杂的东西,可以使用LINQ,例如
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
将采用[“ A”,“ B”,“ C”]并产生“(a)(b)(c)”
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()。
您有一个List<string>
-因此,如果您希望将它们串联起来,例如
string s = string.Join("", list);
将工作(至少在.NET 4.0中)。第一个参数是定界符。因此,您也可以用逗号分隔等。
您可能还想看看使用StringBuilder进行运行串联,而不是形成列表。
.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);
}
}
(请注意,这是徒手编写且未经测试的代码。目前我没有任何方便的编译器。因此,您需要对其进行一些试验。)
很难说,但是也许您正在寻找类似的东西:
var myString = String.Join(String.Empty, myList.ToArray());
这将对列表中的每个项目隐式调用ToString()方法并将其连接起来。
String.Concat()
会更好地实现同一件事。
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();
所有的答案上面确实不为嵌套列表的工作。