Can't convert ListBox.ObjectCollection to a (typed) array

后端 未结 2 374
逝去的感伤
逝去的感伤 2021-01-04 20:43

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

相关标签:
2条回答
  • 2021-01-04 21:03
    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));
    
    0 讨论(0)
  • 2021-01-04 21:11

    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.

    0 讨论(0)
提交回复
热议问题