I want to find a better way of populating a generic list from a checkedlistbox in c#.
I can do the following easily enough:
List<string> selectedFields = new List<string>();
foreach (object a in chkDFMFieldList.CheckedItems) {
selectedFields.Add(a.ToString());
}
There must be a more elagent method to cast the CheckedItems collection to my list.
If you don't have access to LINQ then there isn't a more elegant way since you're performing a second operation on the list items (calling
ToString()
) in addition to populating the selectedFields collection.Try this (using System.Linq):
OfType()
is an extension method, so you need to useSystem.Linq
Or just do it in one line:
This is not exactly the answer to your requirement, but posting a more general answer. You could do it in a variety of ways:
1)
2) looping and adding using
foreach
as you mentioned.3) using Linq
4) or
When I did some performance testing like below, I found copying to array method the fastest while the Linq methods slower. Of course in real world scenarios these wouldnt matter. I prefer the 3rd method (Linq) for readability.
For an iteration of 10000 times run multiple times with about 300 items in list box,
1) ~100ms
2) ~150ms
3) ~250ms
4) ~260ms