在C#中将所有列表内容连接成一个string

如何连接C#中的一个string中的所有内容的列表?

search这个:

List<string> list = new List<string>(); // { "This ", "is ", "your ", "string!"}; list.Add("This "); list.Add("is "); list.Add("your "); list.Add("string!"); string concat = String.Join(" ", list.ToArray()); 

您可以使用聚合函数来连接列表的所有项目。

以下是以逗号“,”连接列表的所有项目的示例

 string s = list.Aggregate((i, j) => i + "," + j).ToString(); 

如果您在join时需要转换列表元素,则可以使用LINQ :

 string.Join(", ", mylist.Select(z => MyMethod(z))); 

例:

 IEnumerable<string> mylist = new List<string>() {"my", "cool", "list"}; string joined = string.Join(", ", mylist.Select(z => MyMethod(z))); public string MyMethod(string arg) { return arg.ToUpper(); } 

这里有一个StringBuilder的简单解决scheme:

  var sb = new StringBuilder(); strings.ForEach(s => sb.Append(s)); var combinedList = sb.ToString(); 

像这样的东西:

  List<String> myStrings = new List<string>() { "string1", "string2", "string3" }; StringBuilder concatenatedString = new StringBuilder(); foreach (String myString in myStrings) { concatenatedString.Append(myString); } Console.WriteLine(concatenatedString.ToString()); 

这是一个使用两个使用LINQ实现的空间分隔元素的版本:

 var s = list.Aggregate(new StringBuilder(), (sb, current) => sb.AppendFormat("{0} ", current)).ToString(); 

Aggregate方法将StringBuilder (作为sb )与列表的当前元素(作为current )一起传递给lambdaexpression式,该lambdaexpression式可以执行任何所需的操作 – 例如将当前string从列表中附加到StringBuilder使用lambdaexpression式体

 public static string ToString<T>(this IEnumerable<T> source, string delimiter) { string d = String.Empty; var result = new StringBuilder(); foreach(T item in source) { result.Append(d).Append(item.ToString()); d = delimiter; } return result.ToString(); } 

还有一个可选的更好的string转换个别值的重载:

 public static string ToString<T>(this IEnumerable<T> source, string delimiter, Func<T, string> toString) { string d = String.Empty; var result = new StringBuilder(); foreach(T item in source) { result.Append(d).Append(toString(item)); d = delimiter; } return result.ToString(); } 

尝试这个:

 request.AllFacilityId = request.FacilityIdList.Aggregate((i, j) => i + "," + j);