当前位置: 首页 > news >正文

C# 比较两个集合和比较对象

1、比较集合

/// <summary>
/// 比较两个集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list1"></param>
/// <param name="list2"></param>
/// <returns></returns>
public static bool EqualList<T>(this List<T> list1, List<T> list2)
{return list1 == null && list2 == null || list1 != null && list1.SequenceEqual(list2);
}

2、比较对象,对象实现IEquatable接口

public class Model: IEquatable<Model>
{public int Id { get; set; }public string Name { get; set; }public List<string> List { get; set; }public bool Equals(Model obj){//this非空,obj如果为空,则返回falseif (ReferenceEquals(null, obj)) return false;//如果为同一对象,必然相等if (ReferenceEquals(this, obj)) return true;//如果类型不同,则必然不相等if (obj.GetType() != GetType()) return false;//对比各个字段值if (!Equals(Id, obj.Id) || !Equals(Name, obj.Name) || !List.EqualList(obj.List))return false;//如果基类不是从Object继承,需要调用base.Equals(other)//如果从Object继承,直接返回truereturn true;}public override int GetHashCode(){return StringComparer.InvariantCulture.GetHashCode(Id);}
}
http://www.lryc.cn/news/459804.html

相关文章:

  • Spark高级用法-自定义函数
  • 『Mysql进阶』Mysql explain详解(五)
  • 【工具】音视频翻译工具基于Whisper+ChatGPT
  • 学成在线——关于nacos配置优先级的坑
  • Nginx在Windows Server下的启动脚本
  • 【国科大】C++程序设计秋季——五子棋
  • Docker 环境下多节点服务器监控实战:从 Prometheus 到 Grafana 的完整部署指南
  • 【动手学深度学习】6.3 填充与步幅(个人向笔记)
  • 【宝可梦】游戏
  • docker启动的rabbitmq如何启动其SSL功能
  • 易基因: cfMeDIP-seq揭示cfDNA甲基化高效区分原发性和转移性前列腺|Nat Commun
  • CMake 教程跟做与翻译 4
  • MySQL面试题分享
  • vue路由缓存问题
  • RabbitMQ中如何解决消息堆积问题,如何保证消息有序性
  • python爬虫案例——selenium爬取淘宝商品信息,实现翻页抓取(14)
  • 在VSCode中使用Excalidraw
  • 25中国投资中投笔试测评秋招校招SHL笔试题型分享
  • 【LeetCode热题100】分治-快排
  • Docker 教程四 (Docker 镜像加速)
  • 各类排序详解
  • 【c语言——指针详解(4)】
  • C# (.net6)实现Redis发布和订阅简单案例
  • 【golang】gorm 使用map实现in 条件查询用法
  • 理论篇| 移动端爬虫
  • systemd实现seatunnel自动化启停
  • MySQL-08.DDL-表结构操作-创建-案例
  • 完成Sentinel-Dashboard控制台数据的持久化-同步到Nacos
  • RocketMq详解:三、RocketMq通用生产和消费方法改造
  • 基于SpringBoot+Vue+Uniapp的仓库点单小程序的详细设计和实现