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

C# List集合基础操作

C# List集合基础操作

这里介绍一下C# list的基础操作: 去重、差集、并集、交集

 

下面,我们看看例子。我们创建了一个User实体,包含两个list,User实体如果Id相等,则相等。

users1是id 1到4的集合,users2是id 4到8的集合。

            List<User> users1 = new List<User>();
            users1.Add(new User() {Id = 1, Age = 1, Name = "Name01"});
            users1.Add(new User() { Id = 2, Age = 2, Name = "Name02" });
            users1.Add(new User() { Id = 3, Age = 3, Name = "Name03" });
            users1.Add(new User() { Id = 4, Age = 4, Name = "Name04" });

            List<User> users2 = new List<User>();
            users2.Add(new User() { Id = 4, Age = 44, Name = "Name044" });
            users2.Add(new User() { Id = 5, Age = 55, Name = "Name01" });
            users2.Add(new User() { Id = 6, Age = 66, Name = "Name06" });
            users2.Add(new User() { Id = 7, Age = 77, Name = "Name07" });
            users2.Add(new User() { Id = 8, Age = 88, Name = "Name08" });

            //把两个list合并在一起
            var result1 = new List<User>();
            result1.AddRange(users1);
            result1.AddRange(users2);

            //去重:在result1中去重
            var result2 = result1.Distinct().ToList();

            //差集:users1在users2之中的差集
            var result3 = users1.Except(users2).ToList();

            //并集:users1与users2 合起来不重复的元素
            var result4 = users1.Union(users2).ToList();

            //交集:users1与users2 相同的元素
            var result5 = users1.Intersect(users2).ToList();

 

下面我们看看User实体的定义:

需要注意的是,我们重写了User的GetHashCode与Equals方法来比较对象是否相等。

    public class User
    {
        public long Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public override bool Equals(object obj)
        {
            if (obj == null || GetType() != obj.GetType())
            {
                return false;
            }
            User u = (User) obj;
            if (this.Id != 0 && u.Id == this.Id)
                return true;
            return false;
            
        }

        public override int GetHashCode()
        {
            return this.Id.GetHashCode();
        }

        public override string ToString()
        {
            return string.Format("id=" + this.Id);
        }
    }


可以关注本人的公众号,多年经验的原创文章共享给大家。

 
     

 
posted on 2017-05-09 10:41 alun-chen 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/alunchen/p/6829460.html

相关文章:

  • bootstrap-表格-响应式表格
  • Linux下的ls 常用命令
  • jquery ui autocomplete 自动补充完成 测试在ie下 点击显示列表框 有时候需要多次点击才能选取值...
  • mysql 误删root
  • 数据库查询
  • 黑马程序员——Java基础语法---数组
  • Reinhold就Jigsaw投票一事向JCP提交公开信
  • eclipse快捷键调试总结 -转--快捷键大全
  • git基本操作
  • bootstrap(4)关于下拉菜单的功能
  • ASP.NET 5探险(8):利用中间件、TagHelper来在MVC 6中实现Captcha
  • 【c语言】统计一个数字在排序数组中出现的次数
  • CentOS 下安装testlink
  • 历史记录
  • crack-jar游戏之CP9
  • Docker 笔记(2):Dockerfile
  • FastReport在线报表设计器工作原理
  • Linux Process Manage
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Spring Cloud Feign的两种使用姿势
  • Vue官网教程学习过程中值得记录的一些事情
  • 大数据与云计算学习:数据分析(二)
  • 对象管理器(defineProperty)学习笔记
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何设计一个微型分布式架构?
  • 时间复杂度与空间复杂度分析
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 新版博客前端前瞻
  • 一份游戏开发学习路线
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (十五)使用Nexus创建Maven私服
  • ***利用Ms05002溢出找“肉鸡
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • ./和../以及/和~之间的区别
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net的socket示例
  • .Net中的集合
  • /etc/sudoer文件配置简析
  • @JoinTable会自动删除关联表的数据
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [20161101]rman备份与数据文件变化7.txt
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [iOS]Win8下iTunes无法连接iPhone版本的解决方法
  • [java面试]宇信易诚 广州分公司 java笔试题目回忆录
  • [loj6039]「雅礼集训 2017 Day5」珠宝 dp+决策单调性+分治
  • [Matlab有限元分析] 2.杆单元有限元分析
  • [MT8766][Android12] 取消WIFI热点超过10分钟没有连接自动关闭设定