从另一个列表中删除项目

14 浏览
0 Comments

从另一个列表中删除项目

我正在努力找出如何遍历一个我想要从另一个列表中删除项目的通用列表。\n所以假设我有这个作为一个假设的例子:\nList list1 = GetTheList();\nList list2 = GetSomeOtherList();\n我想用foreach遍历list1,并删除List2中包含的每个项目。\n我不太确定如何做到这一点,因为foreach不是基于索引的。

0
0 Comments

在这个案例中,我有两个不同的列表,它们有一个共同的标识符,类似于外键。

根据"nzrytmn"提到的第二个解决方案:

var result = list1.Where(p => !list2.Any(x => x.ID == p.ID && x.property1 == p.property1)).ToList();

这个解决方案最适合我的情况。

我需要加载一个下拉列表,但不包含已经注册过的记录。

谢谢!!!

这是我的代码:

t1 = new T1();
t2 = new T2();
List list1 = t1.getList();
List list2 = t2.getList();
ddlT3.DataSource = list2.Where(s => !list1.Any(p => p.Id == s.ID)).ToList();
ddlT3.DataTextField = "AnyThing";
ddlT3.DataValueField = "IdAnyThing";
ddlT3.DataBind();

你没有解释ddlT3是什么。

0
0 Comments

从上面的内容中,我们可以得出以下信息:

问题出现的原因:

- 这个问题是在讨论如何从一个列表中删除另一个列表中的项。

- 初始的解决方法是使用foreach循环遍历第一个列表,并使用Remove函数从第二个列表中移除相同的项。

- 有人认为这种方法不够优雅,建议使用Except()函数来解决这个问题。

解决方法:

- 使用Remove函数从第二个列表中移除第一个列表中的项。

- 使用Except()函数来解决这个问题。

可以得出以下结论:从一个列表中删除另一个列表中的项可以使用Remove函数或Except()函数来实现。

0
0 Comments

问题的出现原因:用户想要在一个列表中移除另一个列表中的项目。

解决方法:可以使用Except方法来实现。使用Except方法需要注意的是,它不会修改任何列表,而是创建一个新的列表来存储结果。如果需要返回一个List类型的结果,需要调用ToList()方法。另外,需要添加using System.Linq命名空间。如果使用ArrayList,可以尝试将其转换为List类型。

注意事项:使用Except方法时要小心,因为它实际上执行的是一个集合操作,会使结果列表去重。这可能与使用List而不是HashSet的预期行为不一致。

有一个用户指出,"Remove items from one list in another"并不等同于集合的差集操作,不应该误导其他人接受这个答案。

对于只读属性的情况,上述方法可能不适用,因为需要对集合进行修改。

0