俄罗斯水手 [C#] 对List<T>取交集、连集及差集
2024-10-19 11:45:23
※本文使用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是否有交集
1 |
bool isIntersected = list1.Intersect(list2).Count() > 0 |
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是否有差集
1 |
bool isExpected = list1.Expect(list2).Count() > 0 |
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 }
※ 6/15補充:感謝蹂躪大大提醒,LinQ已有內建方法Union可取聯集囉!
最新文章
- Get a developer license for windows store app
- Linux shell实现Mysql异地备份数据库
- iOS开发--沙盒路径与操作文件
- word wrap 解惑
- jquery动态添加列表后样式失效解决方式
- HTML技术简介
- asp.net上传控件使用
- 3-08. 栈模拟队列(25)(ZJU_PAT 模拟)
- XAMPP on Mac 组态 Virual Host
- macOS 中的 Rootless 机制
- VMware安装时Error 1324. The path My Documents contains a invalid character的原因和解决方法
- 左偏树(BZOJ4003)
- awesome资源包
- 每天一个Linux命令(05):tail命令
- SolrCore Initialization Failures - Max direct memory is likely too low
- DXP中插入LOGO图片方法(1)
- Windows 7硬盘安装CentOS 6.4 双系统 (WIN7下硬盘安装Linux(Fedora 16,CentOS 6.2,Ubuntu 12.04))
- Linux命令_用户身份切换
- Spring MVC 运行流程图
- arm家族小检阅