C# 如何检查相同的项目并更新列表?
我在一个列表或C# 如何检查相同的项目并更新列表?,c#,asp.net-mvc,C#,Asp.net Mvc,我在一个列表或列表中有大量项目。每个项目都是数据库中的一行。 这些项目的导入将发生在另一个列表或list_2上列表_2已包含相同类型的内容。 是否有办法做到这一点,以便只导入列表2中不存在的项目 请注意,原始订单必须保留在列表_2中,新项目将在原始订单的基础上导入。顺序很重要,因为list_2实际上是一个concurrentqueue。因此,list_1的内容应该以某种方式更新(清除重复项),然后才能开始将其导入list_2。实际导入到list_2(队列)不是问题,我感兴趣的是清理list_1的
列表中有大量项目。每个项目都是数据库中的一行。
这些项目的导入将发生在另一个列表或list_2
上<代码>列表_2
已包含相同类型的内容。是否有办法做到这一点,以便只导入
列表2中不存在的项目
请注意,原始订单必须保留在列表_2
中,新项目将在原始订单的基础上导入。顺序很重要,因为list_2
实际上是一个concurrentqueue。因此,list_1
的内容应该以某种方式更新(清除重复项),然后才能开始将其导入list_2
。实际导入到list_2
(队列)不是问题,我感兴趣的是清理list_1
的方法。谢谢
using System.Linq;
//...
var strippedList1 = list_1.Except(list_2);
为了实现这一点,您需要确保您的对象实现的等于/GetHashcode
请查看下面的代码,它可能会对您有所帮助
List<string> l = new List<string>();
l.Add("1");
l.Add("2");
List<string> l1 = new List<string>();
l1.Add("1");
var abc = l.Except(l1);
List l=新列表();
l、 添加(“1”);
l、 添加(“2”);
列表l1=新列表();
l1.添加(“1”);
var abc=除(l1)外的l;
您的物品没有ID吗?谢谢。不确定“对象实现等于/GetHashcode”是什么意思。我假设您有list_2 is list
。您需要确保SomeClass
覆盖Object.Equals
和Object.GetHashcode
。否则,.NET比较两个对象的唯一方法是比较两个对象是否都是对内存中相同物理对象的引用,这在您的场景中可能没有帮助。list_1和list_2确实是“list”类型。我还将resultlist设置为“List”类型。那么如何确保“SomeClass”覆盖Object.Equals和Object.GetHashcode?这是非常基本的C#概念,您可能希望尽快了解最新情况。以下是一些睡前阅读: