根据其他列表中的项目删除列表中的项目
本文关键字:项目 列表 删除列 删除 其他 | 更新日期: 2023-09-27 17:54:57
如何根据另一个列表中的项从一个列表中删除项?
基本上,我想比较list1和list2,以及这些列表中每个项目的差异应该被删除。
示例:我有一个类叫Dog
class Dog
{
private string _name;
public string Name
{
get { return selisih; }
set { selisih = value; }
}
}
在winform list<Dog> Dog1 = new list<Dog>();
list<Dog> Dog2 = new list<Dog>();
并将项目添加到此列表中。我该如何比较这两个列表呢?当Dog1中的物品在Dog2中不存在时。这些项应该从Dog1中删除或移除。
使用LINQ - Except
方法应该做的。
var dog3 = Dog1.Except(Dog2).ToList();
你可能需要传入一个比较狗的函数,这样它就知道怎么做了。
未经测试:
var dog3 = Dog1.Except(Dog2, (d1, d2) => d1.Name.CompareTo(d2.Name)).ToList();
您可以在LINQ中这样做
Dog1.ForEach(x =>
{
if (!Dog2.Select(z=>z.Name).Contains(x.Name))
{
Dog1.Remove(x);
}
});
最好的方法是使用list . contains()遍历需要同步的列表,检查项目是否存在。
例如:For Each Dog As Dog In Dog1
If Dog2.Contains(Dog) = False Then
Dog2.Add(Dog)
End If
End For
添加在第二个列表中不存在但在第一个列表中存在的项。