为表设计器构造筛选字符串

来源:互联网 发布:vr funhouse 源码下载 编辑:程序博客网 时间:2024/05/29 19:06

原文出自:http://technet.microsoft.com/zh-cn/magazine/ff683669.aspx

为表设计器构造筛选字符串

若要筛选 Visual Studio 表设计器中显示在 Windows Azure 表中的数据,可构造一个筛选器字符串并将其输入到筛选器字段中。筛选器字符串语法由 WCF 数据服务进行定义,与 SQL WHERE 子句类似,但通过 HTTP 请求发送给表服务。表设计器会为您处理正确的编码以便筛选所需的属性值,您只需要在筛选器字段中输入属性名、比较运算符、条件值以及可选的布尔运算符。不必将 $filter 查询选项包括在内,因为要通过 Windows Azure Storage Services REST API Reference 构造 URL 查询表。

“WCF 数据服务”基于“打开数据协议”(OData)。筛选系统查询选项的详细信息 ($filter),请参阅OData URI 约定规范。

所有属性类型都支持以下逻辑运算符:

逻辑运算符

说明

筛选器字符串示例

eq

等于

City eq 'Redmond'

gt

大于

Price gt 20

ge

大于或等于

Price ge 10

lt

小于

Price lt 20

le

小于或等于

Price le 100

ne

不等于

City ne 'London'

and

Price le 200 and Price gt 3.5

or

Price le 3.5 or Price gt 200

not

not isAvailable

当构建筛选器字符串时,以下规则非常重要:

  • 使用逻辑运算符可将属性和值进行比较。 请注意,无法将属性和动态值进行比较;表达式的一端必须是常数。

  • 筛选器字符串的所有部分都区分大小写。

  • 常数值的数据类型必须与属性的类型相同,这样筛选器才能返回有效的结果。有关支持的属性类型的更多信息,请参见Understanding the Table Service Data Model

针对字符串属性进行筛选

当对字符串属性进行筛选时,用单引号将字符串常数括起来。

以下示例对 PartitionKeyRowKey 属性进行筛选;也可以将其他非键属性添加到筛选器字符串中:

PartitionKey eq 'Partition1' and RowKey eq '00001'

可以用圆括号将每个筛选器表达式括起来,但这不是必需的:

(PartitionKey eq 'Partition1') and (RowKey eq '00001')

请注意,表服务不支持通配符查询,并且表设计器中也不支持这些查询。 但是,可以通过对所需前缀使用比较运算符来执行前缀匹配。 下面的示例返回 LastName 属性以字母“A”开头的实体:

LastName ge 'A' and LastName lt 'B'

针对数值属性进行筛选

若要对整数或浮点数进行筛选,请指定无引号引起来的数字。

此示例返回 Age 属性值大于 30 的所有实体:

Age gt 30

此示例返回 AmountDue 属性值小于或等于 100.25 的所有实体:

AmountDue le 100.25

针对布尔值属性进行筛选

若要对布尔值进行筛选,请指定 truefalse(不带引号)。

下面的示例返回 IsActive 属性设置为 true 的所有实体:

IsActive eq true

您也可以在不使用逻辑运算符的情况下编写此筛选器表达式。 在下面的示例中,表服务还将返回 IsActive 为 true 的所有实体:

IsActive

若要返回 IsActive 为 false 的所有实体,您可以使用not 运算符:

not IsActive

针对日期时间属性进行筛选

若要对日期时间值进行筛选,请指定 datetime 关键字,后跟单引号括起来的日期/时间常数。日期/时间常数必须采用组合的 UTC 格式,如Formatting the DateTime Property Values中所述。

下面的示例返回 CustomerSince 属性等于 2008-07-10 的实体:

CustomerSince eq datetime'2008-07-10T00:00:00Z'