这里介绍一下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 = , Age = , Name = "Name01"});
users1.Add(new User() { Id = , Age = , Name = "Name02" });
users1.Add(new User() { Id = , Age = , Name = "Name03" });
users1.Add(new User() { Id = , Age = , Name = "Name04" }); List<User> users2 = new List<User>();
users2.Add(new User() { Id = , Age = , Name = "Name044" });
users2.Add(new User() { Id = , Age = , Name = "Name01" });
users2.Add(new User() { Id = , Age = , Name = "Name06" });
users2.Add(new User() { Id = , Age = , Name = "Name07" });
users2.Add(new User() { Id = , Age = , 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 != && 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);
}
}

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


 

C# List集合基础操作的更多相关文章

  1. python基础之数据类型操作补充,集合及其操作,深浅拷贝

    内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...

  2. 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键

    1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...

  3. Python 基础之集合相关操作与函数和字典相关函数

    一:集合相关操作与相关函数 1.集合相关操作(交叉并补) (1)intersection() 交集 set1 = {"one","two","thre ...

  4. day07-Python运维开发基础(深/浅拷贝、字典/集合/相关操作)

    1. 深拷贝与浅拷贝 # ### 深拷贝 和 浅拷贝 """ a = 7 b = a a = 8 print(b) lst1 = [1,2,3] lst2 = lst1 ...

  5. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  6. C#集合基础与运用

    C#集合基础与运用   C#集合基础与运用 1. 集合接口与集合类型............................................... 1 (1) 集合的命名空间..... ...

  7. Python 3 集合基础和概念!

    Python 3 集合基础和概念! Python 3中,集合是无序的,所以不能进行切片和索引操作. 创建集合有两个方法:set()方法创建的集合是可变的,可被迭代的:frozenset()方法创建的集 ...

  8. 小白学 Python(23):Excel 基础操作(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  9. 小白学 Python(24):Excel 基础操作(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

随机推荐

  1. Python自动化开发 - 进程、线程(一)

    本节内容 1.操作系统发展史 2.进程和线程 3.Python threading 模块 一.操系统发展史 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统 ...

  2. 安卓读写INI文件 安卓读写INI文件

    安卓读写INI文件   安卓读写INI文件 uses System.IoUtils procedure TForm1.Button1Click(Sender: TObject);varIniFile: ...

  3. iOS开发 关于iBeacon的一些记录

    最近时间一直在研究ibeacon所以把自己遇到的一些问题写下来做个笔记. 参考资料:https://github.com/nixzhu/dev-blog/blob/master/2014-04-23- ...

  4. 安装使用Entity Framework Power Tool Bate4 (Code First)从已建好的数据自动生成项目中的对应Model(新手贴,望各位大侠给予指点)

    从开始学习使用MVC以后,同时也开始接触EF,很多原理都不是太懂,只知道安装了EF以后,点击哪里可以生成数据库对应的Model,不用再自己手写Model.这里记录的就是如何从已建立好的数据库生成项目代 ...

  5. js css等静态文件版本控制,一处配置多处更新.net版【原创】

    日常web开发中,我们修改了js.css等静态资源文件后,如果文件名不变的话,客户端浏览并不会及时获取最新的资源文件,这就很尴尬了 怎么办呢? 1.小白:让客户清除缓存?,No ,  不靠谱 2.初级 ...

  6. 6.翻译:EF基础系列---什么是EF中的实体?

    原文地址:http://www.entityframeworktutorial.net/basics/what-is-entity-in-entityframework.aspx EF中的实体就是继承 ...

  7. 读配置文件property文件

    import java.io.IOException;import java.util.Properties; import org.springframework.core.io.support.P ...

  8. JavaScript Boolean( new Boolean(false) ) 其实是true

    Boolean类型是JavaScript原始数据类型(primitive type)之一:常用来表示 真或假,是或否:这个类型只有两个值:保留字true和false 一般用于控制语句:如下 if(Bo ...

  9. java项目配置域名(tomcat直接配置 or 使用nginx反向代理)

    一:  tomcat直接配置域名:https://blog.csdn.net/qq_36330228/article/details/78516160 二: 使用nginx进行反向代理 tomcat服 ...

  10. centos 安装nginx笔记

    添加nginx 存储库 yum install epel-release 安装 yum install nginx 启动 systemctl start nginx