我有一个从组合框中填充的列表框。我需要做的是将列表框的所有内容串起来然后聚合它。
string cols = listbox1.items.Aggregate((f, s) => f.value + "," + s.value);
不起作用。
答案 0 :(得分:3)
Items是一个ObjectCollection,所以你肯定知道的是它包含了对象。您可以在任何对象上调用ToString:
string[] items = listBox1.Items
.OfType<object>()
.Select(item => item.ToString())
.ToArray();
string result = string.Join(",", items);
请注意,这比使用聚合更具可读性和效率,这会导致多个字符串连接。
答案 1 :(得分:1)
假设您在列表框中有字符串,请尝试:
string cols =
String.Join(",", listbox1.Items
.OfType<Object>()
.Select(i => i.ToString())
.ToArray());
通常 String.Join 用于加入字符串。这比使用StringBuilder更快,因为新字符串的大小已经知道,并且不必将所有内容复制两次。
答案 2 :(得分:1)
非常古老的主题,但如果还有人需要它,这是我的解决方案
string cols = string.Join(",", listBox1.Items.Cast<String>());
答案 3 :(得分:0)
string cols = listBox1.Items.Cast<string>().Aggregate((f, s) => f + "," + s);
答案 4 :(得分:0)
我认为你需要明确地做ToString()
string cols = listbox1.items.Aggregate((f, s) => f.value.ToString() + "," + s.value.ToString());