按下拉列表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
需要一个ListItem
而FindByValue
只返回一个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
,那么你就不会看到它。