这里介绍一下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. 笔记1:jmeter性能测试使用示例(原文:http://blog.csdn.net/zhongweijian/article/details/7619319)

    jmeter是一个简单开源的纯java的性能测试工具.今天学习了jmeter使用了下jmeter,使用起来非常简单. 如果我们要对163的首页性能进行简单测试,我们可以按照以下步骤进行. 1.在测试计 ...

  2. adb错误 - INSTALL_FAILED_NO_MATCHING_ABIS

    #背景 换组啦,去了UC国际浏览器,被拥抱变化了.还在熟悉阶段,尝试了下adb,然后就碰到了这个INSTALL_FAILED_NO_MATCHING_ABIS的坑... #解决方法 INSTALL_F ...

  3. wpf根据X与Y轴获取内部值

    效果图: 环境 Visual Studio ,.Net Framework 4.0 SDK 支持Windows XP,Windows Win7.. 实现方法: 创建ListBox设置ListBox.I ...

  4. 【转】C# 之泛型详解

    原文地址:https://www.cnblogs.com/yueyue184/p/5032156.html 什么是泛型 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一 ...

  5. 【mock】后端不来过夜半,闲敲mock落灯花 (mockjs+Vuex+Vue实战)

      mock的由来[假]   赵师秀:南宋时期的一位前端工程师 诗词背景:在一个梅雨纷纷的夜晚,正处于项目编码阶段,书童却带来消息:写后端的李秀才在几个时辰前就赶往临安度假去了,!此时手头仅有一个简单 ...

  6. UCore-Lab1

      日期:2019/3/31 内容:makefile分析: 一."Makefile"分析 1.1 ucore.img lab1已有的源文件 目录 文件 boot asm.h.boo ...

  7. [学习笔记]区间dp

    区间 \(dp\) 1.[HAOI2008]玩具取名 \(f[l][r][W/I/N/G]\) 表示区间 \([l,r]\) 中能否压缩成 \(W/I/N/G\) \(Code\ Below:\) # ...

  8. cad.net的undo返回操作

    这是提供给许多从lisp转移到c#的开发人员的一个函数,这个函数利用后绑代码实现undo返回操作. 本代码由edata提供: edata博客 /// <summary> /// 命令动作编 ...

  9. FileAttributeView出现空指针异常原因分析

    问题?   Java7新增了关于文件属性信息的一些新特性,通过java.nio.file.*包下面的类可以实现设置或者读取文件的元数据信息(比如最后修改时间,创建时间,文件大小,是否为目录等等).尤其 ...

  10. Swift5 语言指南(二十七) 访问控制

    访问控制限制从其他源文件和模块中的代码访问部分代码.此功能使您可以隐藏代码的实现细节,并指定一个首选接口,通过该接口可以访问和使用该代码. 您可以为各个类型(类,结构和枚举)以及属于这些类型的属性,方 ...