从另一个列表中删除项目

我试图弄清楚如何遍历要从另一个项目列表中删除的项目的一般列表。


假设我有一个假设的例子


List<car> list1 = GetTheList();

List<car> list2 = GetSomeOtherList();

我想用一个foreach遍历list1并删除List2中也包含的List1中的每个项目。


我不太确定该怎么做,因为foreach不是基于索引的。


交互式爱情
浏览 396回答 3
3回答

慕标5832272

您可以使用Except:List<car> list1 = GetTheList();List<car> list2 = GetSomeOtherList();List<car> result = list2.Except(list1).ToList();您甚至可能不需要这些临时变量:List<car> result = GetSomeOtherList().Except(GetTheList()).ToList();请注意,Except这不会修改任何一个列表-它会使用结果创建一个新列表。

心有法竹

您不需要索引,因为List<T>该类允许您通过值而不是通过使用Remove函数来删除项。foreach(car item in list1) list2.Remove(item);

慕尼黑8549860

在我的情况下,我有两个不同的列表,具有相同的标识符,有点像外键。“ nzrytmn”引用的第二个解决方案:var result =&nbsp; list1.Where(p => !list2.Any(x => x.ID == p.ID && x.property1 == p.property1)).ToList();是最适合我的情况的一种。我需要加载没有已注册记录的DropDownList。谢谢 !!!这是我的代码:t1 = new T1();t2 = new T2();List<T1> list1 = t1.getList();List<T2> list2 = t2.getList();ddlT3.DataSource= list2.Where(s => !list1.Any(p => p.Id == s.ID)).ToList();ddlT3.DataTextField = "AnyThing";ddlT3.DataValueField = "IdAnyThing";ddlT3.DataBind();
打开App,查看更多内容
随时随地看视频慕课网APP