I was working on some old code which created three DropDown controls with hours, minutes, and seconds.
This was the original code:
for (var i = 0; i < 24; i++){ Hour.Items.Add(new ListItem(i.ToString()));}
for (var i = 0; i < 60; i++){ Minute.Items.Add(new ListItem(i.ToString())); Second.Items.Add(new ListItem(i.ToString()));}
I wanted to “LINQify” this code using the LINQ range method:
Enumerable.Range(int start, int count)
This returns an IEnumerable<int>
collection with the corresponding range of values.
So, my DropDown controls are now created with the following code:
Hour.Items.AddRange( Enumerable .Range(0, 24) .Select(i => new ListItem(i.ToString())).ToArray());
Minute.Items.AddRange( Enumerable .Range(0, 60) .Select(i => new ListItem(i.ToString())).ToArray());
Second.Items.AddRange( Enumerable .Range(0, 60) .Select(i => new ListItem(i.ToString())).ToArray());
This could be optimized by using a variable for the sixty values which could be used twice.