对List取交集、联集及差集

前言

最近在项目中,刚好遇到这个需求,需要比对两个List,进行一些交集等操作,在以前我们可能需要写很多行来完成这些动作,但现在我们只需要藉由LinQ就能轻松达到我们的目的啰!

实际演练

※本文使用int为例,若为使用自定义之DataModel,需实现IEquatable接口才能使用

1. 取交集 (A和B都有)

List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }

var intersectedList = list1.Intersect(list2);

结果 : { 3 , 9 }

判断A和B是否有交集

bool isIntersected = list1.Intersect(list2).Count() > 0

2. 取差集 (A有,B没有)

List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }

var expectedList = list1.Except(list2);

结果 : { 1 , 2 , 5 }

判断A和B是否有差集

bool isExpected = list1.Expect(list2).Count() > 0

3. 取联集 (包含A和B)

List A : { 1 , 2 , 3 , 5 , 9 }
List B : { 4 , 3 , 9 }

var result = A.union(B)

结果 : { 1 , 2 , 3 , 5 ,9 , 4 }

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.