Remove multiple items by value from dropdownlist C#

3 .net c# asp.net drop-down-menu

I have one dropdownlist named drpdemo and consist some listitems as shown below

Design Code:

<asp:DropDownList ID="drpdemo" runat="server">
    <asp:ListItem Value="213">Select</asp:ListItem>
    <asp:ListItem Value="0">0</asp:ListItem>
    <asp:ListItem Value="2">2</asp:ListItem>
    <asp:ListItem Value="3">3</asp:ListItem>
    <asp:ListItem Value="4">4</asp:ListItem>
    <asp:ListItem Value="5">5</asp:ListItem>
    <asp:ListItem Value="0">0</asp:ListItem>
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

Inline Code:

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

Current Output:

Select
  2
  3
  4
  5
  0
Run Code Online (Sandbox Code Playgroud)

Above output comes with the 0, which i don't want it in output.

Expected Output:

Select
   2
   3
   4
   5
Run Code Online (Sandbox Code Playgroud)

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

mat*_*mmo 5

您必须使用循环,因为Remove需要一个ListItemFindByValue只返回一个ListItem

要删除项目,我们可以这样做:

var toDelete = drpDemo.Items
               .Cast<ListItem>()
               .Where(i => i.Value == "0");
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

foreach (var item in toDelete)
{
    drpDemo.Items.Remove(item);
}
Run Code Online (Sandbox Code Playgroud)

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

toDelete.ForEach(i => drpDemo.Items.Remove(i));
Run Code Online (Sandbox Code Playgroud)

合而为一:

drpDemo.Items
    .Cast<ListItem>()
    .Where(i => i.Value == "0")
    .ToList()
    .ForEach(i => drpDemo.Items.Remove(i));
Run Code Online (Sandbox Code Playgroud)