根据其他列表中的项目删除列表中的项目

本文关键字:项目 列表 删除列 删除 其他 | 更新日期: 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

添加在第二个列表中不存在但在第一个列表中存在的项。