C# 比较,;从asp.net Web窗体的列表框中删除项目

C# 比较,;从asp.net Web窗体的列表框中删除项目,c#,asp.net,listbox,C#,Asp.net,Listbox,我在asp.net webform应用程序中有两个列表框 LIstBox1有所有项目的列表,ListBox2有指定的项目 一页加载两个ListBox1都填充了所有项目,ListBox2填充了分配的项目&我有一个按钮,可以从ListBox2中删除分配的项目 var itms1 = ListBox1.Items; var itms2 = ListBox2.Items; foreach (var itm in itms2) {

我在asp.net webform应用程序中有两个列表框

LIstBox1有所有项目的列表,ListBox2有指定的项目

一页加载两个ListBox1都填充了所有项目,ListBox2填充了分配的项目&我有一个按钮,可以从ListBox2中删除分配的项目

var itms1 = ListBox1.Items;
            var itms2 = ListBox2.Items;
            foreach (var itm in itms2)
            {
                if (itms1.Contains(itm)) itms1.Items.Remove(itm); 

            }
我得到了错误,如图所示

我只想比较ListBox2和ListBox1,并从ListBox1中删除匹配的ListBox2值

我尝试了不同的方法,但我不断地得到类似的错误,否则它将无法工作

ListBox将ProjectName显示为文本,ProjectID显示为ListBox值


我正在使用.net framework 4.5上的asp.net webform应用程序,您只需使用以下内容:

itms1.RemoveAll( item => itms2.Contains(item));

这段代码删除了列表2中的所有项目,这对我来说很有用

 foreach (ListItem itemA in LisyBox2.Items)
        {
               for (int i = ListBox1.Items.Count - 1; i > -1; i--)
            {
                {
                    if (ListBox1.Items[i].Text == itemA.Text)
                    {
                        ListBox1.Items.RemoveAt(i);
                    }
                }

            }
        }

它不显示RemoveAll选项,而只显示Remove&RemoveAt选项RemoveAll不显示的原因是您正在使用ListBox.ObjectCollection。如果要删除项目,为什么要首先将其放在ListBox中?简单地说,不要将它们放在列表框中。这实际上是一个编辑,用户可以更改其中的选择,因此,我必须显示用户先前在listbox2中选择的内容,但我想从Listbox1中删除listbox2中已经存在的相同项目。