详解.NET 的求复杂类型集合的差集、交集、并集
前言如标题所述,在http://ASP.NET应用程序开发中,两个集合做比较时 我们使用微软 IEnumerable 封装的 Except/Intersect/Union 取 差集/交集/并集 方法是非常的方便的;但以上对于不太熟悉的小伙伴来讲,在遇到求包含引用类型(不包含 string)集合时就非常的苦恼;下面我将带着大家去了解如何通过微软自带方法方式去取**复杂类型集合**的差集、交集、并集。场景这里是场景,我有以下两个学生集合。
生成两个实体集合;下面我们取交集/差集/并集完整调用示例(.NET Core):
以上输出仔细看一下明显是不对的,这就涉及到了复杂类型对比,请看代码:正常我们声明的类
因为我们要对比的是引用类型,因为在对比除 string 引用类型外,其他引用类型的对比默认都是对比的堆里地址,所以我们要实现一个自定义的对比方案我们需要继承一个接口 IEqualityComparer<T> 泛型接口如下:(这里我们以年龄与名做为对比条件)
修改了类后还有最重要的一点:就是修改比较的方法(相当于声明一个自定义的比较器给方法)
到这里引用类型的比较已经完成了,比较器的条件方法可以根据需求调整,如有不足之处,希望大家多多指正!!!
只有努力把自己变得更优秀,才能更好的生活
评论