不使用 for 循环将 ListItems 复制到 DropDownList Items 的 ListItemCollection

Copy ListItems to the DropDownList Items’ ListItemCollection without using a for loop

我正在动态生成许多 DropDownList 框(在 ASP.NET WebForm 页面上),允许用户从列表中 select 0 到 24 之间的值。 DropDownList 有一个 ListItemCollection Items 属性,我希望能够将 ListItems 复制到这个集合中,而不必为每个 DropDownList 使用 For 循环。

我最初希望使用以下代码创建一个值为 0-24 的 List<ListItems>

List<ListItem> listHours = new List<ListItem>();
for (int hr = 0; hr < 25; hr++)
{
    listHours.Add(new ListItem(hr.ToString(), hr.ToString()));
}

然后将这个列表复制到每个DropDownList。

您似乎无法设置 DropDownList 的项目 属性(即 myDropDownList.Items = listHours),因为您收到错误消息“...项目没有 setter。”

我可以编写一个函数来用值 1-24 填充每个 DropDownList,但这会使用 for 循环并花费更多时间。

有没有办法在不使用 for 循环的情况下将项目列表(可以是 List<ListItems>、ListItem 数组等)复制到 DropDownList?

您可以使用 AddRange 方法:

List<ListItem> listHours = new List<ListItem>();
for (int hr = 0; hr < 25; hr++)
{
     listHours.Add(new ListItem(hr.ToString(), hr.ToString()));
}
myDropDownList.Items.AddRange(listHours.ToArray());

我在想一些与尤金相似的事情。 这是 1 行:

 DropDownList1.Items.AddRange(Enumerable.Range(0, 25).Select(x => new ListItem(x.ToString(), x.ToString())).ToArray());