将列表转换为C#中的string
如何将列表转换为C#中的string?
当我在List对象上执行toString
时,我得到:
System.Collections.Generic.List`1 [System.String]
也许你正在努力
string combindedString = string.Join( ",", myList.ToArray() );
你可以用你想要分割列表中的元素来replace“,”。
我要去我的直觉,并假设你想在列表的每个元素上连接调用ToString
的结果。
var result = string.Join(",", list.ToArray());
如果你想要比简单的连接稍微复杂一点,你可以使用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()。
你可以使用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的替代方法,您可以用您select的基于string的行分隔符replace它。
引用types的.ToString()
方法通常会parsing回System.Object.ToString()
除非您在派生types(可能使用内置types的扩展方法System.Object.ToString()
重写它。 此方法的默认行为是输出所调用types的名称。 所以你看到的是预期的行为。
你可以尝试像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); } }
(请注意,这是免费的,未经testing的代码,目前我还没有编译器,所以你可以试试一下。)
你有一个List<string>
– 所以如果你想要它们连接,就像
string s = string.Join("", list);
会工作(至less在.NET 4.0中)。 第一个参数是分隔符。 所以你也可以用逗号分隔
你可能也想看看使用StringBuilder来运行连接,而不是形成一个列表。
这很难说,但也许你正在寻找像这样的东西:
var myString = String.Join(String.Empty, myList.ToArray());
这将隐式地调用列表中每个项目上的ToString()方法,并将它们连接起来。
如果你String.Join("", myList)
列表中的项目变成一个很长的string,可以这样做: String.Join("", myList)
。 一些较旧版本的框架不允许您传递一个IEnumerable作为第二个参数,因此您可能需要通过调用.ToArray()将列表转换为数组。
直接回答你的问题是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();