对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 }

比较使用Linq To Entity、自已编写ORM映射、以及使用缓存保存常用数据之间的性能

第1步 建立数据库

首先我们模拟1个需求环境:会员参加活动,生成活动记录,会员有性别、所属区域字段。
第1步,建立Sql Server数据库,Members表保存成员的基本信息,其中SexId、AreaId为外键,分别关联Sex性别表、Areas区域表;Activitys表保存活动的标题;ActivityRecords表保存成员参加活动的记录,其中MemberId、ActivityId为外键,分别关联Members成员表、Activitys活动表。

下面是创建表结构的Sql语句:
Continue reading “比较使用Linq To Entity、自已编写ORM映射、以及使用缓存保存常用数据之间的性能”