按下拉列表C#中的值删除多个项目

我有一个名为drpdemo的下拉列表,并包含一些列表项,如下所示

设计代码:

 Select 0 2 3 4 5 0  

内联代码:

 protected void Page_Load(object sender, EventArgs e) { drpdemo.Items.Remove(drpdemo.Items.FindByValue("0")); } 

电流输出:

 Select 2 3 4 5 0 

以上输出带有0,我不希望它在输出中。

预期产出:

 Select 2 3 4 5 

注意:不要使用任何循环。

您将不得不使用循环,因为Remove需要一个ListItemFindByValue只返回一个ListItem

要获取要删除的项目,我们可以:

 var toDelete = drpDemo.Items .Cast() .Where(i => i.Value == "0"); 

然后你可以这样做:

 foreach (var item in toDelete) { drpDemo.Items.Remove(item); } 

或者,如果您在function上倾向于,请执行以下操作:

 toDelete.ForEach(i => drpDemo.Items.Remove(i)); 

一切都在:

 drpDemo.Items .Cast() .Where(i => i.Value == "0") .ToList() .ForEach(i => drpDemo.Items.Remove(i)); 

Dropdown列表不支持一次删除多个项目的任何方法,因此您必须使用循环。

如果你可以在内部使用循环,但只是不想写一个循环,你总是可以使用LINQ(虽然我会留下它来判断它是否提高了可读性而不是使用循环)。

 drpdemo.Items .OfType() .Where(li => li.Value == "0") .ToList() .ForEach(li => drpdemo.Items.Remove(li)); 

如果仔细查看下拉列表,您会注意到有两个具有相同值的项目, 0 。 所以方法FindByValue找到第一个,然后你只删除它。 如果你只有一个值为0 ListItem ,那么你就不会看到它。