public class ClassA
{
public enum1 Type { get;set;}
public List<ClassB> lst1 {get; set;}
}
public class ClassB
{
public string var1 { get;set;}
public int var2 { get;set;}
public List<int> var3 { get;set;}
public List<int> var4 { get;set;}
}
List<ClassA> lst1=Somefunction1();
List<ClassA> lst2=Somefunction2();
字符串
我如何检查lst 1和lst 2是否相等,考虑到顺序,以及我是否想在比较时排除一个属性var1
。
这是我目前得到的:
var firstNotSecond = lst1.Except(lst2).ToList();
var secondNotFirst = lst2.Except(lst1).ToList();
if ((firstNotSecond.Count > 0) || (secondNotFirst.Count > 0))
{
// not equal result = false;
}
型
可以看到,lst 1和lst 2都是ClassA项的列表。列表相等的正常定义是,如果第一个列表中的每个项等于第二个列表中的相应项,则它们相等。对应的意思是具有相同索引的项目。
但是,我不希望对类A的对象进行正常的相等比较,我希望指定特定的相等比较器
- 如果属性var 2/var 3/ var 4具有相等的值,则ClassB的两个对象被视为相等。
- 如果属性Type具有相同的值,并且两个ClassA对象的属性lst 1都是Enumerable,则两个ClassA对象相等。
我假设这必须通过为这些类实现IEquality来完成,或者可能为我的lst 1和lst 2创建EqualityComparerer并使用SequenceEqual
1条答案
按热度按时间ogsagwnx1#
字符串