簡體   English   中英

比較 .NET 對象 - 比較 2 個列表

[英]Compare .NET Objects - Compare 2 lists

我有 2 個對象列表。 在進行比較時如何忽略 Car 的某些屬性? 我已經嘗試過 MembersToIgnore 和 AttributesToIgnore 但它似乎無法識別它並且它仍然返回差異中的這些屬性。 當我只是嘗試比較 2 Cars 時它工作得很好,當我比較列表時如何忽略這些屬性?

List<Car> lst1
List<Car> lst2

CompareLogic compare = new CompareLogic();
ComparisonResult res = compare.Compare(lst1,lst2);

您需要使用自定義比較器

例如:

public class SpecialCarComparer: BaseTypeComparer
{
    public SpecialCarComparer(RootComparer rootComparer) : base(rootComparer)
    {
    }

    public SpecialCarComparer() : this(RootComparerFactory.GetRootComparer())
    {
    }

    public override bool IsTypeMatch(Type type1, Type type2)
    {
        return type1 == typeof(Car);
    }

    public override void CompareType(CompareParms parms)
    {
        Car car1 = parms.Object1 as Car;
        Car car2 = parms.Object2 as Car;
        

        if (car1?.SomeCarProperty != car2?.SomeCarProperty || car1?.AnotherCarProperty > 100 || car2?.AnotherCarProperty < 100)
        {
            AddDifference(parms);
        }
    }
}

然后使用它:

CompareLogic compareLogic = new CompareLogic();
compareLogic.Config.CustomComparers.Add(new SpecialCarComparer());
ComparisonResult result = compareLogic.Compare(obj1, obj2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM