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 = , 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集合基础操作的更多相关文章
- python基础之数据类型操作补充,集合及其操作,深浅拷贝
内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...
- 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键
1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...
- Python 基础之集合相关操作与函数和字典相关函数
一:集合相关操作与相关函数 1.集合相关操作(交叉并补) (1)intersection() 交集 set1 = {"one","two","thre ...
- day07-Python运维开发基础(深/浅拷贝、字典/集合/相关操作)
1. 深拷贝与浅拷贝 # ### 深拷贝 和 浅拷贝 """ a = 7 b = a a = 8 print(b) lst1 = [1,2,3] lst2 = lst1 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- C#集合基础与运用
C#集合基础与运用 C#集合基础与运用 1. 集合接口与集合类型............................................... 1 (1) 集合的命名空间..... ...
- Python 3 集合基础和概念!
Python 3 集合基础和概念! Python 3中,集合是无序的,所以不能进行切片和索引操作. 创建集合有两个方法:set()方法创建的集合是可变的,可被迭代的:frozenset()方法创建的集 ...
- 小白学 Python(23):Excel 基础操作(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(24):Excel 基础操作(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
随机推荐
- 笔记1:jmeter性能测试使用示例(原文:http://blog.csdn.net/zhongweijian/article/details/7619319)
jmeter是一个简单开源的纯java的性能测试工具.今天学习了jmeter使用了下jmeter,使用起来非常简单. 如果我们要对163的首页性能进行简单测试,我们可以按照以下步骤进行. 1.在测试计 ...
- adb错误 - INSTALL_FAILED_NO_MATCHING_ABIS
#背景 换组啦,去了UC国际浏览器,被拥抱变化了.还在熟悉阶段,尝试了下adb,然后就碰到了这个INSTALL_FAILED_NO_MATCHING_ABIS的坑... #解决方法 INSTALL_F ...
- wpf根据X与Y轴获取内部值
效果图: 环境 Visual Studio ,.Net Framework 4.0 SDK 支持Windows XP,Windows Win7.. 实现方法: 创建ListBox设置ListBox.I ...
- 【转】C# 之泛型详解
原文地址:https://www.cnblogs.com/yueyue184/p/5032156.html 什么是泛型 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一 ...
- 【mock】后端不来过夜半,闲敲mock落灯花 (mockjs+Vuex+Vue实战)
mock的由来[假] 赵师秀:南宋时期的一位前端工程师 诗词背景:在一个梅雨纷纷的夜晚,正处于项目编码阶段,书童却带来消息:写后端的李秀才在几个时辰前就赶往临安度假去了,!此时手头仅有一个简单 ...
- UCore-Lab1
日期:2019/3/31 内容:makefile分析: 一."Makefile"分析 1.1 ucore.img lab1已有的源文件 目录 文件 boot asm.h.boo ...
- [学习笔记]区间dp
区间 \(dp\) 1.[HAOI2008]玩具取名 \(f[l][r][W/I/N/G]\) 表示区间 \([l,r]\) 中能否压缩成 \(W/I/N/G\) \(Code\ Below:\) # ...
- cad.net的undo返回操作
这是提供给许多从lisp转移到c#的开发人员的一个函数,这个函数利用后绑代码实现undo返回操作. 本代码由edata提供: edata博客 /// <summary> /// 命令动作编 ...
- FileAttributeView出现空指针异常原因分析
问题? Java7新增了关于文件属性信息的一些新特性,通过java.nio.file.*包下面的类可以实现设置或者读取文件的元数据信息(比如最后修改时间,创建时间,文件大小,是否为目录等等).尤其 ...
- Swift5 语言指南(二十七) 访问控制
访问控制限制从其他源文件和模块中的代码访问部分代码.此功能使您可以隐藏代码的实现细节,并指定一个首选接口,通过该接口可以访问和使用该代码. 您可以为各个类型(类,结构和枚举)以及属于这些类型的属性,方 ...