一、简单类型List的交集并集差集

1、先定义两个简单类型的List

List<int> listA = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
List<int> listB = new List<int>() { 1, 2, 3, 4, 9 };

2、取两个List的并集

var resultUnionList= listA.Union(listB).ToList();

执行结果如下:1, 2, 3, 4, 5, 6, 7, 8, 9

3、取两个List的交集

var resultIntersectList = listA.Intersect(listB);

执行结果如下:1, 2, 3, 4

4、取两个List的差集,差集是指取在该集合中而不在另一集合中的所有的项

var resultExceptList = listA.Except(listB);

执行结果如下:5, 6, 7, 8

二、对象List集合的交集并集差集

1、先定义一个类

//学生类
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
}

2、定义两个List

//LISTA
List<Student> stuListA = new List<Student>();
stuListA.Add(new Student
{
Name = "A1",
Age = 10,
Sex = "男"
});
stuListA.Add(new Student
{
Name = "A2",
Age = 11,
Sex = "男"
}); //LISTB
List<Student> stuListB = new List<Student>();
stuListB.Add(new Student
{
Name = "B1",
Age = 10,
Sex = "女"
});
stuListB.Add(new Student
{
Name = "B2",
Age = 11,
Sex = "男"
});

3、取上述两个list集合的并集

var result = stuListA.Union(stuListB).ToList();

4、取上述两个list集合的交集,应为是对象集合,可以根据一定规则 Func<TSource, bool> predicate限定那些属于交集

  (1)取两个对象集合中对象名称一样的交集

var result = stuListA.Where(x => stuListB.Any(e => e.Name == x.Name)).ToList();

  

  (2)取两个对象集合中对象名称、对象年龄、对象性别都一样的交集

var result = stuListA.Where(x => stuListB.Any(e => e.Name == x.Name && e.Age == x.Age && e.Sex == x.Sex)).ToList();

5、取上述两个list集合的差集,可以根据一定规则 Func<TSource, bool> predicate限定那些属于差集

  (1)取差集,根据两个对象集合中对象名称一样的规则取差集

var result = stuListA.Where(x =>! stuListB.Any(e => e.Name == x.Name)).ToList();

  (2)取差集,根据两个对象集合中对象名称、对象年龄、对象性别都一样的规则取差集

var result = stuListA.Where(x => !stuListB.Any(e => e.Name == x.Name && e.Age == x.Age && e.Sex == x.Sex)).ToList();

最新文章

  1. iOS开发之功能模块--关于自定义TabBar条
  2. axis2开发webservice入门到精通
  3. wangEditor ie9 表单上传图片
  4. Search and Replace
  5. MD5 密码破解 碰撞 网站
  6. ARM内核和架构都是什么意思,它们到底是什么关系?
  7. 开源欣赏wordpress之用户新增user-new.php
  8. 关于KeyEvent.Callback
  9. poj3358 Period of an Infinite Binary Expansion 数论有难度
  10. Node.js基础知识
  11. Eclipse导入servlet项目报错
  12. (十分钟视频教程)nodejs基础实战教程3:react服务端渲染入门篇
  13. SQLAlchemy 使用(一)创建单一model
  14. Mybatis自定义SQL拦截器
  15. Community宣言
  16. Spring MVC 后端获取前端提交的json格式字符串并直接转换成control方法对应的参数对象
  17. Docker1之Container
  18. Python Oracle连接与操作封装
  19. [视频播放] M3U8文件格式说明
  20. JAVA_Package

热门文章

  1. charles初级使用
  2. 大规模 IoT 边缘容器集群管理的几种架构-3-Portainer
  3. 爬取精美壁纸5w张,爱了爱了
  4. JZOJ 2936. 【NOIP2012模拟8.9】逐个击破
  5. 基于WebGL的方式使用OpenLayers
  6. MySQL Replication(数据同步技术)
  7. 【研究生学习】Turbo编码
  8. 2023 年 CCF 春季测试赛模拟赛 - 1
  9. Solidity8.0-02
  10. ERR_UNSAFE_PORT浏览器安全问题无法访问的解决方案