如何将列表值的组合字符串发布到消息框中



我有一个while循环,它将某些值发布到字符串中,还有一个按钮,它应该将值连接到字符串中并显示为消息框。

string toDisplay = string.Join("," , Export.ToString());
MessageBox.Show(toDisplay);   

然而,我得到的只是内部列表,而不是值。出口

列表启动器

List<int> Export = new List<int>();

如果Export是int的List,则不在Join中添加ToString((,只保留列表

string toDisplay = string.Join("," , Export);
MessageBox.Show(toDisplay);   

如果将ToString((方法添加到Export变量,则要求列表将其自身表示为字符串,但通用List<T>对此没有任何重写,并使用基础对象类中的底层ToString((。这个方法只输出类名
相反,如果只保留List变量名Export,则使用的Join方法是枚举列表元素(整数(并要求它们一个接一个地给出自己的ToString((表示。整数可以做到这一点。

很高兴知道一些Linq,Aggregate可以帮助:

var toDisplay = (export?.Any() ?? false) ? // not null and not empty
export.Select(m => m.ToString()).Aggregate((m1, m2) => $"{m1},{m2}") : 
string.Empty;

注意:但从内存分配的角度来看,@Steve的回答更有效

最新更新