【发布时间】:2012-07-23 23:43:37
【问题描述】:
正如标题所说,是否可以使用 LINQ 从 DropDownList 的 .Items 中删除 Item 不等于我指定的字符串的项目?
换句话说 - 我有一个字符串列表,如果一个项目与列表中的任何字符串都不匹配,它就会被删除。
注意:我知道如何实现这一点,我可以使用 foreach 循环来实现。没关系 - 但我想知道是否有 LINQ 替代方案。
编辑:我应该说 - Item 的 .Text 属性匹配字符串列表中的任何项目。
编辑:对于那些感兴趣的人,这是我提出的“foreach”方式:
private void FilterDropDownChoices(List<String> permittedChoices)
{
foreach(ListItem item in ddlChoices.Items)
{
if (!permittedChoices.Contains(item.Text))
{
ddlChoices.Items.Remove(item);
}
}
}
【问题讨论】:
-
你测试过吗?您实际上应该收到该代码的错误,因为您在迭代时无法更改集合。
-
我没有测试过它,当我在等待这个 linq 替代品时,它很快就被三心二意地拼凑在一起了。鉴于您刚刚提到的错误 - 如果没有建议的 LINQ 替代方案,我将获取并设置 foreach 之外的项目集合(使用另一个本地集合)。谢谢@ryanulit。
-
这里有一个
foreach循环,用于产生副作用(改变Items集合)。 Linq 不能替代它。 Linq 用于查询,这不是您正在做的。 Further reading。您能做的最好的事情是通过 LINQ 获取要删除的项目集。不过,您仍然希望有一个foreach循环来实际删除它们。 -
好奇:你为什么要使用 LINQ?
标签: c# asp.net linq dropdownbox