C# 如何比较c中的两个对象列表
如您所见,lst1和lst2都是ClassA项的列表。列表相等的一般定义是,如果第一个列表中的每个项目等于第二个列表中的相应项目,则列表相等。我指的是具有相同索引的项目 但是,我不希望对类A的对象进行普通的相等比较,我希望指定特定的相等比较程序 如果属性var2/var3/VAR4的值相等,则认为ClassB的两个对象相等。 如果属性类型具有相同的值,并且两个ClassA对象的属性lst1都是可枚举的,则ClassA的两个对象相等。SequenceEqualC# 如何比较c中的两个对象列表,c#,linq,C#,Linq,如您所见,lst1和lst2都是ClassA项的列表。列表相等的一般定义是,如果第一个列表中的每个项目等于第二个列表中的相应项目,则列表相等。我指的是具有相同索引的项目 但是,我不希望对类A的对象进行普通的相等比较,我希望指定特定的相等比较程序 如果属性var2/var3/VAR4的值相等,则认为ClassB的两个对象相等。 如果属性类型具有相同的值,并且两个ClassA对象的属性lst1都是可枚举的,则ClassA的两个对象相等。SequenceEqual 我假设这必须通过为这些类实现IEqu
我假设这必须通过为这些类实现IEquality来完成,或者可能创建一个EqualityComparer,并为我的lst1和lst2使用SequenceEqual,哪两个列表?var1的内容是什么?一个整数值?以逗号分隔的整数列表?ClassA和你的问题有什么关系?你尝试过什么?这将是一个过去的案例…看这个:和其他一些帖子…@HaraldDutch请让OP思考一下。不要重写他的帖子来反映你认为的问题。步骤1创建一个类,实现并执行你想要的这个案例的完全相等比较。第二步:如果!lst1.sequenceequalslt2,instanceofthequalitycomparer{/*not sequenceequal*/}如果A然后返回true,则返回false,而不是编码:返回A不是更好吗?
var firstNotSecond = lst1.Except(lst2).ToList();
var secondNotFirst = lst2.Except(lst1).ToList();
if ((firstNotSecond.Count > 0) || (secondNotFirst.Count > 0))
{
// not equal result = false;
}
var firstNotSecond = lst1.Except(lst2).ToList();
var secondNotFirst = lst2.Except(lst1).ToList();
if ((firstNotSecond.Count > 0) || (secondNotFirst.Count > 0))
{
// not equal result = false;
}
public class ClassBEqualityComparer : IEqualityComparer<ClassB>
{
public bool Equals(ClassB x, ClassB y)
{
if((x.var2.Equals(y.var2)) && (x.var3.SequenceEqual(y.var3)) && (x.var4.SequenceEqual(y.var4)))
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(ClassB x)
{
}
}
public class ClassAEqualityComparer : IEqualityComparer<ClassA>
{
public bool Equals(ClassA x, ClassA y)
{
ClassBEqualityComparer ClassBEqC = new ClassBEqualityComparer();
if((x.Type == y.Type) && (x.lst1.SequenceEqual(y.lst1,ClassBEqC)))
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(ClassA x)
{
}
}
ClassAEqualityComparer ClassAEqC = new ClassAEqualityComparer();
bool result = lst1.SequenceEqual(lst2, ClassAEqC);