C# 检查两个对象在字段中是否包含相同的数据
我有一个包含许多属性的Pharmacy类,通过将ID属性作为键,一个Pharmacy被声明为唯一的 我已经准备好了代码,可以将表中的所有行从MySQL返回到具有属性的Pharmacy对象C# 检查两个对象在字段中是否包含相同的数据,c#,.net,list,object,equality,C#,.net,List,Object,Equality,我有一个包含许多属性的Pharmacy类,通过将ID属性作为键,一个Pharmacy被声明为唯一的 我已经准备好了代码,可以将表中的所有行从MySQL返回到具有属性的Pharmacy对象 我想比较两个列表对象中的条目,检查两个表中是否存在相同的ID,如果不存在,则将其添加到新列表Equals的标准实现仅检查引用的相等性 您可以覆盖Equals的行为 或者实现一个自定义的IEqualityComparer。如果您的ORM映射器像Entity Framework一样依赖默认的equals,则这可能更
我想比较两个列表对象中的条目,检查两个表中是否存在相同的ID,如果不存在,则将其添加到新列表Equals的标准实现仅检查引用的相等性 您可以覆盖Equals的行为
或者实现一个自定义的IEqualityComparer。如果您的ORM映射器像Entity Framework一样依赖默认的equals,则这可能更可取。您必须重写equals以比较ID属性,否则仅比较引用序列化两个对象并比较结果字符串,是否可以作为选项?
public class Pharmacy
{
[Key]
public string Tunniste { get; set; }
public string Lyhenne { get; set; }
public string PitkaNimi { get; set; }
public string YlempiYksikko { get; set; }
public string Hierarkiataso { get; set; }
public string VoimassaoloAlkaa { get; set; }
public string VoimassaoloPaattyy { get; set; }
...
}
for (int i = 0; i != pharmacyListFromArchive.Count; i++)
{
if (pharmacyListFromArchive[i].Equals(pharmacyListFromNew[i]))
{
Console.WriteLine("Objects are identical.");
}
else
{
Console.WriteLine("Objects are NOT identical. {0} - {1}", pharmacyListFromArchive[i].Tunniste, pharmacyListFromNew[i].Tunniste);
}
}
public class Pharmacy {
// fields ...
public override bool Equals(object obj) {
// If parameter is null return false.
if (obj == null) {
return false;
}
// If parameter cannot be cast to Pharmacy return false.
Pharmacy p = obj as Pharmacy;
if ((System.Object)p == null) {
return false;
}
// Return true if the fields match:
return p.Lyhenne == this.Lyhenne &&
p.PitkaNimi == this.PitkaNimi
// && etc...
;
}
public override int GetHashCode() {
return Lyhenne.GetHashCode() ^ PitkaNimi.GetHashCode() /* ^ etc ... */;
}
}