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):变 ...
随机推荐
- iOS笔记之UIKit_UIButton
//UIButton的基本属性 _btn = [UIButton buttonWithType:UIButtonTypeCustom]; _btn.frame = CGRectMake(0, 200, ...
- [LintCode] Longest Increasing Continuous subsequence
http://www.lintcode.com/en/problem/longest-increasing-continuous-subsequence/# Give you an integer a ...
- .NET Core下开源任务调度框架Hangfire的Api任务拓展(支持秒级任务)
HangFire的拓展和使用 看了很多博客,小白第一次写博客. 最近由于之前的任务调度框架总出现问题,因此想寻找一个替代品,之前使用的是Quartz.Net,这个框架方便之处就是支持cron表达式适合 ...
- wpf 导出Excel
private void Button_Click_1(object sender, RoutedEventArgs e) { ExportDataGridSaveAs(true, this.data ...
- SpringBoot使用ModelAndView时配置视图解析器
spring boot 使用视图modelandview 原文:https://www.cnblogs.com/liyafei/p/7955943.html 1:springboot使用视图解析器,添 ...
- 16_python_面向对象
一.面向对象和面向过程的区别 1.面向对象:一切以对象为中心.有相同属性和动作的结合体叫做对 优点:易维护.易复用.易扩展,由于面向对象有封装.继承.多态性的特性 ...
- git使用分支与tag
查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b ...
- POJ 2551
#include<iostream> #include<stdio.h> #include<string> using namespace std; //int m ...
- Android使用内容提供者实现增删改查操作
Android使用内容提供者实现增删改查操作 这里需要建立两个项目:SiYouShuJuKu(使用内容提供者暴露相关的操作),DQDYGApplication(使用内容解析者对第一个应用进行相关的解析 ...
- javascript中对条件判断语句的优化 分类: JavaScript 2015-06-07 09:54 832人阅读 评论(2) 收藏
不管写什么程序,平时都会用到条件语句,如:if...else... switch这样的语句,来达到对条件的判断.下面看来一段代码: function abc(test){ if (test == 1) ...