如何将列表的内容放在单个MessageBox中?

基本上,我有一个包含多个项目的列表,我想要一个消息框来显示它们。

我最接近的是每个项目的消息框(使用foreach )。

我想要的是相当于:

 MessageBox.Show ("List contains:"+ Foreach (string str in list) { str + Environment.Newline + } ) 

但显然这不起作用! 这样做的正确方法是什么?

您可以使用string.Join将所有内容连接到单个字符串中:

 var message = string.Join(Environment.NewLine, list); MessageBox.Show(message); 

但是,如果您无法访问.NET 4,则不会出现带有IEnumerable重载。 你将不得不回避采用数组的那个:

 var message = string.Join(Environment.NewLine, list.ToArray()); MessageBox.Show(message); 

您还可以使用Stringbuilder:

 StringBuilder builder = new StringBuilder(); foreach(string str in list) { builder.Append(str.ToString()).AppendLine(); } Messagebox.Show(builder.ToString()); 

问候

如果你有.Net 4.0

 string s = String.Join(",", list); 

如果你没有,但有3.5

 string s = String.Join(",", list.ToArray()); 

只是为了好玩,如果你需要用非字符串集合做一次这样的事情 – 使用Aggregate的LINQ版本,它最接近你的示例语法。 不要在这里使用它,在这种情况下确实使用String.Join ,但请记住,你在LINQ中有一些可以做你需要的东西。

 MessageBox.Show("List contains: " + list.Aggregate((str,val) => str + Environment.NewLine + val); 

编辑:同样,就像Martinho Fernandes所指出的那样,最好在这种情况下使用StringBuilder类,所以:

 MessageBox.Show("List contains: " + list.Aggregate(new StringBuilder(), (sb,val) => sb.AppendLine(val), sb => sb.ToString())); 

只需要制作一个for循环,例如:

  string total =""; for(int i =0; i