gpt4 book ai didi

c# - 我可以使用 linq 从 asp .net DropDownList.Items 中删除项目吗?

转载 作者:行者123 更新时间:2023-11-30 19:06:27 26 4
gpt4 key购买 nike

如标题所述,是否可以使用 LINQ 从 DropDownList 的 .Items 中删除项目,其中项目不等于我指定的字符串?

换句话说 - 我有一个字符串列表,如果一个项目与列表中的任何字符串都不匹配,它就会被删除。

注意:我知道如何实现这一点,我可以使用 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);
}
}
}

最佳答案

ryanulit 实际上提供了最佳答案。

问题是 ListItemCollection 只实现了 IEnumerable 接口(interface)。 LINQ 扩展适用于 IEnumerable 。因此,将 (IEnumerable) 转换为 (IEnumerable ) - 您现在可以使用 LINQ。

所以,回答你的问题:

ddlChoices.Items
.Cast<ListItem>()
.Where(item => !permittedChoices.Contains(item.Text))
.ToList()
.ForEach(ddlChoices.Items.Remove);

您必须使用 ToList() 或 ToArray() 或类似方法,因为您不能在读取集合时修改它 - ToList() 复制对所选项目的引用,然后可以循环并从 ListItemCollection 中删除.

在写这篇文章时,我看到了 Matten 的评论——他强调了 ListItemCollection 的有用功能(能够通过文本属性删除项目),但我答错了问题。要求是:您只允许在 ddlChoices.Items 中包含“permittedChoices”。 Matten 的示例删除了有效的选择并保留无效的选择,这与他的要求相反。

关于c# - 我可以使用 linq 从 asp .net DropDownList.Items 中删除项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11651492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com