将列表转换为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();