List的交并补集
来源:互联网 发布:数据分析应用 编辑:程序博客网 时间:2024/04/24 08:01
前言
最近在專案中,剛好遇到這個需求,
需要比對兩個List,進行一些交集等操作,
在以前我們可能需要寫很多行來完成這些動作,
但現在我們只需要藉由LinQ就能輕鬆達到我們的目的囉!
實際演練
※本文使用int為例,若為使用自訂之DataModel,需實作IEquatable<T>介面才能使用
1. 取交集 (A和B都有)
List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }
1
var intersectedList = list1.Intersect(list2);
結果 : { 3 , 9 }
判斷A和B是否有交集
2. 取差集 (A有,B沒有)
List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }
1
var expectedList = list1.Except(list2);
結果 : { 1 , 2 , 5 }
判斷A和B是否有差集
3. 取聯集 (包含A和B)
List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }
01
public
static
class
ListExtensions
02
{
03
public
static
List<T> Merge<T>(
this
List<T> source, List<T> target)
04
{
05
List<T> mergedList =
new
List<T>(source);
06
07
mergedList.AddRange(target.Except(source));
08
09
return
mergedList;
10
}
11
}
1
var mergedList = list1.Merge(list2);
結果 : { 1 , 2 , 3 , 5 ,9 , 4 }
1
bool
isExpected = list1.Expect(list2).Count() > 0
1
bool
isIntersected = list1.Intersect(list2).Count() > 0
- List的交并补集
- 顺序表的交并补 增删查
- SDUST-OJ-1681 Problem 求集合的交并补集(不用STL,手写单链表实现)
- 数据结构(线性结构习题)Problem A: 求集合的交并补集
- 数据结构(线性结构习题)Problem A: 求集合的交并补集
- java 集合交并补
- 【JAVA】集合交并补
- 数组交并补
- poj 3225 区间(区间的交并补操作)
- POJ 3225(线段树,区间的交并补操作)
- 线段树交并补+poj3225
- 两个集合的交并集等
- c++实现集合的交并差集
- C++集合的模板类 交并集
- python list交并差异或
- poj 3225 Help with Intervals 线段树 集合的交并差补运算
- POJ 3225-线段树求区间或集合的交并补、异或
- 玩转 HTML5 下 WebGL 的 3D 模型交并补
- loaderInfo 和 contentLoaderInfo 的区别
- java 多进程并发控制(转载)
- 一个简单的ODP.NET程序
- 调试Release发布版程序的Crash错误(五)
- VC++中选择文件夹的代码
- List的交并补集
- 调试Release发布版程序的Crash错误(六)
- 常见sql 语句
- SQL Server 索引结构及其使用(一)
- 开源EDA资源
- 解决eclipse-helios中Errors running builder JavaScript Validator的问题
- java 和系统时间相差8小时
- 我的C# 第一章
- Eclipse J2EE IDE + Spring IDE