首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较.NET对象-比较2个列表

比较.NET对象-比较2个列表
EN

Stack Overflow用户
提问于 2022-03-02 14:30:19
回答 1查看 554关注 0票数 1

我有两个对象列表。在做比较的时候,我怎么能忽略汽车的一些特性呢?我尝试过MembersToIgnore和AttributesToIgnore,但是它似乎没有意识到它,而且它仍然返回那些不同的属性。当我试着比较两辆车时,它工作得很好,当我比较列表时,我怎么能忽略这些属性呢?

代码语言:javascript
运行
复制
List<Car> lst1
List<Car> lst2

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

回答 1

Stack Overflow用户

发布于 2022-06-25 16:50:51

您需要使用自定义比较器

例如:

代码语言:javascript
运行
复制
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);
        }
    }
}

然后用它:

代码语言:javascript
运行
复制
CompareLogic compareLogic = new CompareLogic();
compareLogic.Config.CustomComparers.Add(new SpecialCarComparer());
ComparisonResult result = compareLogic.Compare(obj1, obj2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71324384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档