Evil 域

当Evil遇上先知

导航

Entity Framework之Entity SQL(四) 集合运算符

Posted on 2008-10-13 21:38  Saar  阅读(2408)  评论(1编辑  收藏  举报

Entity SQL中存在许多集合类型的数据,因此,集合操作在Entity SQL中也比较重要。本文介绍Entity SQL中常用的集合运算符。

阅读本文前注意,首先约定,这里的集合可以包含重复元素,而非我们平时所说的不包含重复元素的集合。

  • SET

语法:Set(Colleciton)

说明:我们假定Collection中可以包含重复元素,那么,Set(Collection)就取出Collection中的非重复的元素。

例如:Set({1,1,3,3,4})将得到结果{1,3,4}。

在Entity SQL中,实体和行是可以比较的。当然,作为用户,大家不必去关心到底怎么比——对于实体,主键相同则为相同实体;对于行,则要求结构一致;而集合是不可以进行比较的,换句话说:set({{1,2,3},{1,2,3}})是非法的。

 

  • IN

语法:e IN collection

说明:IN运算符返回e是否在collection中。

例如:1 IN {1,2,3}返回TRUE,1 IN {-1,-2,-3}返回FALSE。

 

  • EXISTS    

语法:EXISTS(collection)

说明:判定collection是否为空,为空时返回FALSE,否则,返回TRUE。

例如:EXISTS({1})返回TRUE;而EXISTS(SELECT V from {1,2,3} AS V WHERE V=-1)返回FALSE。

 

  • UNION

语法:collectionA UNION [ALL] collection

说明:UNION求两个集合的并集,并且去除相同的元素;而UNION ALL求两个集合并集,但是,同时包含重复元素。

例如:{1,2,3} UNION {2,3,4}得到 {1,2,3,4},而{1,2,3} UNION ALL {2,3,4} 得到{1,2,3,2,3,4}。

 

  • INTERSECT

语法:collecitonA INTERSECT collectionB

说明:INTERSECT求两个集合的交集。

例如:{1,2,3} INTERSECT {2,3}得到{2,3}。注意,交集会去除重复元素。{1,2,2,3} INTERSECT {2,2,3}得到{2,3},而非{2,2,3}

 

  • EXCEPT

语法:collecitonA EXCEPT collecitonB

说明:A EXCEPT B代表:从A集合里减去B集合的元素。换句话说,就是取得A中有B中没有的元素。

例如:{1,2,3} EXCEPT {2,3}将得到{1}。

 

  • OVERLAPS

语法:collecitonA OVERLAPS collectionB

说明:A OVERLAPS B将判定A、B集合是否有交集,有则返回TRUE,没有则返回FALSE。其相当于EXISTS(A INTERSECT B)。

例如:{1,2,3} OVERLAPS {3,4} 返回TRUE,而{1,2,3} OVERLAPS {4,5} 返回FALSE。

 

  • ANYELEMENT

语法:ANYELEMENT(collection)

说明:ANYELEMENT随机返回集合中的任意一个元素。

例如:ANYELEMENT({1,2,3})有可能返回1,有可能返回2也有可能返回3。

 

小结:

本文走马观花,简单介绍了Entity SQL中的一些集合运算符。这些运算符大家其实都见名知意。 列举在这儿,方便大家一时想不起来时候查阅。