Skip to content
/ Michaël Hompus

I was working on some old code which created three DropDown controls with hours, minutes and seconds. I wanted to LINQify it using the LINQ Range method.

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.

Filed under C#
Last update: