c# - 防止将重复项添加到列表框

标签 c# asp.net listbox

我有这段代码,用于将所选项目从一个 ListBox 添加到另一个。如何防止用户两次添加项目?我希望他们添加到 lstBoxToUserProjectsListBox 只包含不同的项目,没有重复的条目。

protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
    List<ListItem> itemsToAdd= new List<ListItem>();

    foreach (ListItem listItem in lstbxFromUserProjects.Items)
    {
        if (listItem.Selected)
            itemsToAdd.Add(listItem);
    }

    foreach (ListItem listItem in itemsToAdd)
    {
        lstBoxToUserProjects.Items.Add(listItem);
    }
}

编辑: 这是我最终使用的

protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
    List<ListItem> itemsToAdd= new List<ListItem>();

    foreach (ListItem listItem in lstbxFromUserProjects.Items)
    {
        if (listItem.Selected)
            itemsToAdd.Add(listItem);
    }

    foreach (ListItem listItem in itemsToAdd)
    {

        if (!lstBoxToUserProjects.Items.Contains(listItem)) 
        {
            lstBoxToUserProjects.Items.Add(listItem);
        }
    }
}

最佳答案

如果您将 lstBoxToUserProjects 列表框绑定(bind)到一个数据源 (HashSet),那么您可以做一个简单的检查以查看建议选择的项目是否已经在目标中:

foreach(ListItem itemToAdd in itemsToAdd)
{
    if (selectedItems.Contains(itemToAdd)) continue;
    lstBoxToUserProjects.Items.Add(itemToAdd);
}

请注意,我建议使用 HashSet,因为这样您就可以对集合进行性能检查,而必须枚举 List 才能检查匹配。

关于c# - 防止将重复项添加到列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419905/

相关文章:

c# - 如何在解决方案中配置所有 C# 项目

c# - 加载项目时遇到警告 IDE0006 错误

asp.net - 通过 asp.net Identity 获取所有用户和所有角色

c# - 日期时间字段的验证消息显示我的列名称

listbox - Excel VBA : Listbox

wpf - 根据 ListBox 中的索引设置 ListBoxItem 的样式

c# - SelectedIndex 第一次调用时列表框 SelectedValue 错误

c# - 下载时更新对话框表单

c# - 单独线程中的多个表单

c# - asp.net session 对象被设置为空