I want to convert the items to a String array or the type that I used to fill the ListBox.DataSource. The type has overridden ToString() but I can\'t seems to get it convert
string[] a = ListBox1.Items.Cast<string>().ToArray();
Of course, if all you plan to do with a
is iterate over it, you don't have to call ToArray(). You can directly use the IEnumerable<string>
returned from Cast<string>()
, e.g.:
foreach (var s in ListBox1.Items.Cast<string>()) {
do_something_with(s);
}
Or, if you have some way to convert strings to Contacts, you can do something like this:
IEnumerable<Contacts> c = ListBox1.Items.Cast<string>().Select(s => StringToContact(s));
The Cast
method doesn't seem to be available anymore. I came up with an other solution :
String[] array = new String[ListBox.Items.Count]
ListBox.Items.CopyTo(array, 0);
The CopyTo
method takes an existing array and insert the items at the given index and forward.
I don't know if this is very efficient, but its consistent and easy to write.