如何将列表转换为C#中的字符串?
当我在List对象上执行 toString 时,我得到:
toString
System.Collections.Generic.List`1 [System.String]
引用类型的 .ToString() 方法通常会解析回 System.Object.ToString() ,除非您在派生类型中覆盖它(可能使用内置类型的扩展方法) . 此方法的默认行为是输出's called. So what you'所看到的类型的名称是预期的行为 .
.ToString()
System.Object.ToString()
您可以尝试类似 string.Join(", ", myList.ToArray()); 来实现此目的 . 这是一个额外的步骤,但它可以放在 System.Collections.Generic.List<T> 的扩展方法中,以使它更容易一些 . 像这样的东西:
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); } }
(请注意,这是免费和未经测试的代码 . 目前我没有编译器 . 所以你需要稍微试验一下 . )
也许你正在尝试做
string combindedString = string.Join( ",", myList.ToArray() );
您可以将“,”替换为要在列表中拆分元素的内容 .
我将以我的直觉感受并假设您想要连接在列表的每个元素上调用 ToString 的结果 .
ToString
var result = string.Join(",", list.ToArray());
如果你想要比简单连接稍微复杂的东西,你可以使用LINQ,例如
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
取[“A”,“B”,“C”]并产生“(a)(b)(c)”
这很难说,但也许你正在寻找类似的东西:
var myString = String.Join(String.Empty, myList.ToArray());
这将隐式调用列表中每个项的ToString()方法并将它们连接起来 .
你有 List<string> - 所以如果你想要它们连接起来,就像这样
List<string>
string s = string.Join("", list);
会工作(至少在.NET 4.0中) . 第一个参数是分隔符 . 所以你也可以用逗号分隔等 .
您可能还希望使用StringBuilder来运行连接,而不是形成列表 .
String.Join(" ", myList) 或 String.Join(" ", myList.ToArray()) . 第一个参数是子串之间的分隔符 .
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()..
你可以使用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的替代方法,您可以使用您选择的基于字符串的行分隔符替换它 .
正如其他人所提到的,你问题的直接答案是 String.Join .
String.Join
但是,如果您需要一些操作,可以使用 Aggregate :
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();
如果您要将列表中的项目转换为大字符串,请执行以下操作: String.Join("", myList) . 某些旧版本的框架不允许您将IEnumerable作为第二个参数传递,因此您可能需要通过调用.ToArray()将列表转换为数组 .
String.Join("", myList)
10 Answers
引用类型的
.ToString()
方法通常会解析回System.Object.ToString()
,除非您在派生类型中覆盖它(可能使用内置类型的扩展方法) . 此方法的默认行为是输出's called. So what you'所看到的类型的名称是预期的行为 .您可以尝试类似
string.Join(", ", myList.ToArray());
来实现此目的 . 这是一个额外的步骤,但它可以放在System.Collections.Generic.List<T>
的扩展方法中,以使它更容易一些 . 像这样的东西:(请注意,这是免费和未经测试的代码 . 目前我没有编译器 . 所以你需要稍微试验一下 . )
也许你正在尝试做
您可以将“,”替换为要在列表中拆分元素的内容 .
我将以我的直觉感受并假设您想要连接在列表的每个元素上调用
ToString
的结果 .如果你想要比简单连接稍微复杂的东西,你可以使用LINQ,例如
取[“A”,“B”,“C”]并产生“(a)(b)(c)”
这很难说,但也许你正在寻找类似的东西:
这将隐式调用列表中每个项的ToString()方法并将它们连接起来 .
你有
List<string>
- 所以如果你想要它们连接起来,就像这样会工作(至少在.NET 4.0中) . 第一个参数是分隔符 . 所以你也可以用逗号分隔等 .
您可能还希望使用StringBuilder来运行连接,而不是形成列表 .
String.Join(" ", myList)
或String.Join(" ", myList.ToArray())
. 第一个参数是子串之间的分隔符 .根据您的.NET版本,您可能需要先在列表中使用ToArray()..
你可以使用string.Join:
The result would be:
作为Environment.NewLine的替代方法,您可以使用您选择的基于字符串的行分隔符替换它 .
正如其他人所提到的,你问题的直接答案是
String.Join
.但是,如果您需要一些操作,可以使用
Aggregate
:如果您要将列表中的项目转换为大字符串,请执行以下操作:
String.Join("", myList)
. 某些旧版本的框架不允许您将IEnumerable作为第二个参数传递,因此您可能需要通过调用.ToArray()将列表转换为数组 .