在C#中将所有列表内容连接到一个字符串中

kar*_*tal 46 c# list

如何在C#中的一个字符串中连接列表的所有内容?

Sec*_*cko 86

正在寻找:

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());
Run Code Online (Sandbox Code Playgroud)

  • 不确定你是否需要ToArray()部分(.NET 4):String.Join()似乎有List <string>和List <int>的重载. (8认同)
  • `string.Join("",list.ToArray());` (4认同)
  • @EdGraham实际上,重载是针对IEnumerable <T>而且IEnumerable中有一个特定的<string> (3认同)

Zbi*_*dro 7

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

string.Join(", ", mylist.Select(z => MyMethod(z)));
Run Code Online (Sandbox Code Playgroud)

例:

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();
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么是-1?任何原因? (2认同)

小智 6

您可以使用Aggregate函数来连接列表的所有项目.

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

string s = list.Aggregate((i, j) => i + "," + j).ToString();
Run Code Online (Sandbox Code Playgroud)


Wau*_*ugh 5

如果您的对象中有一些属性,并且想要在其中进行更多格式化,请使用LINQ,

var output = string.Join(" ", list.Select(t => t.Prop1 + " " + t.Prop2));
Run Code Online (Sandbox Code Playgroud)

这将在对象的每个属性之间放置一个空格,并且在每个对象之间也放置一个空格。