Devexpress Xpo 查询 标准语言语法

Devexpress Xpo 标准语言语法

https://docs.devexpress.com/CoreLibraries/4928/devexpress-data-library/criteria-language-syntax

 

标准对象

https://docs.devexpress.com/XPO/3311/create-a-data-model/xpo-classes-comparison

XPO Classes Comparison

可以从PersistentBase、XPBaseObject、XPObject、XPLiteObject和XPCustomObject类派生持久对象。

 

XPOClassHierarchy

从类派生对象时,会自动为此对象启用XPO功能。例如,OptimisticLockingAttribute自动应用于从PersistentBase、XPBaseObject、XPCustomObject或XPObject类派生的对象。这将启用乐观锁定功能。但是,当对象从XPLiteObject类派生时,此功能将被禁用。

 

Class NameDeferred DeletionOptimistic LockingBuilt-in OID key
PersistentBase No Yes No
XPBaseObject No Yes No
XPLiteObject No No No
XPCustomObject Yes Yes No
XPObject Yes Yes Yes
TIP

我们建议您使用PersistentBase类作为WPF应用程序中持久类的基类。有关更多信息,请参阅WPF应用程序中的XPO最佳实践。

 

跨平台类库提供了标准语言,您可以在各种DevExpress产品中使用这些语言来构建表达式。表达式是使用CriteriaOperator解析的字符串。对一个CriteriaOperator对象进行解析,计算一个值。下表包含可以在表达式中使用的常量、运算符和函数。

下面的DevExpress产品扩展和/或覆盖此语法。下表列出了解释如何在这些产品中使用表达式的文章。

Product

Article

Reporting报告

Expression Constants, Operators, and Functions

Dashboard仪表板

Expression Constants, Operators, and Functions

Pivot Grid 主网格

Pivot Grid Expression Syntax

eXpressApp Framework eXpressApp框架

Function Criteria Operators

eXpress Persistent Objects eXpressApp持久对象

UpcastingFree JoinsHow to: Filter Persistent Objects by Type

 

 

 

Constant

Description

Example

XLS(x) Format Export-Friendly *See Note

String constants

用撇号包装字符串常量。
如果字符串包含撇号,则将撇号加倍。

[Country] == 'France'

[Name] == 'O''Neil'

Yes

Date-time constants

'#'中包装日期-时间常量。

[OrderDate] >= #2018-03-22 13:18:51.94944#

Yes

True

表示布尔真值。

[InStock] == True

Yes

False

表示布尔False.

[InStock] == False

Yes

Enumeration

使用其基础整数值指定枚举值。

[Status] == 1

注意,不能使用限定名指定枚举值。以下标准是不正确的:

[Status] = Status.InProgress

您可以使用EnumProcessingHelper类的静态方法注册自定义枚举,然后引用枚举值如下:

Status = ##Enum#MyNamespace.Status,InProgress#

Yes

Guid

用大括号包装一个Guid常量。在只有等式或不等式操作符的关系操作中使用Guid常量

[OrderID] == {513724e5-17b7-4ec6-abc4-0eae12c72c1f}

Yes

Numeric

  • 使用后缀在字符串形式中指定不同的数值常量类型:
  • Int32 (int) - 1
  • Int16 (short) - 1s
  • Byte (byte) - 1b
  • Double (double) - 1.0
  • Single (float) - 1.0f
  • Decimal (decimal) - 1.0m

[Price] == 25.0m

Yes

null

表示不引用任何对象的空引用。
若要比较操作数为null,请使用IsNull一元运算符(例如,“[Region]null)IsNull逻辑函数(例如,“IsNull([Region]))

Iif([Price] > 25.0m, [Price], null)

Yes

 

 

Constants

可以使用任意数量的位置参数构建参数化标准。为此,向criteria表达式添加参数占位符(问号字符),以标识参数位置并提供参数值列表。在构建标准时,参数占位符被参数值替换,参数值按列出的顺序排列。

CriteriaOperator.Parse("[Name] == ? and [Age] == ?", "John", 33)

下面两个示例是相同的,但是第二个示例减少了格式错误的机会。CriteriaOperator.Parse("[OrderDate] >= #1/1/2009#")

CriteriaOperator.Parse("[OrderDate] >= ?", new DateTime(2009, 1, 1))

当未指定参数时,参数占位符将被null替代。

CriteriaOperator.Parse("[Region] != ?")

Operators

Operator

Description

Example

XLS(x) Format Export-Friendly See Note

+

将一个数值表达式的值添加到另一个表达式,或将两个字符串连接起来.

[UnitPrice] + 4

[FirstName] + ' ' + [LastName]

Yes

-

找出两个数字之间的差.

[Price1] - [Price2]

Yes

*

将两个表达式的值相乘。

[Quantity] * [UnitPrice] * (1 - [BonusAmount])

Yes

/

第一个操作数除以第二个操作数。

[Quantity] / 2

Yes

%

返回一个数值表达式除以另一个表达式得到的余数(模数).

[Quantity] % 3

Yes

|

对两个数值表达式执行按位包含的或。将其第一个操作数的每一位与第二个操作数的对应位进行比较。如果任一位为1,相应的结果位设置为1。否则,相应的结果位被设置为0

[Number] | [Number]

Yes

&

按位的和操作符。将其第一个操作数的每一位与第二个操作数的对应位进行比较。如果两个位都是1,相应的结果位被设置为1。否则,相应的结果位被设置为0.

[Number] & 10

Yes

^

对两个数值表达式执行按位排他或。

[Number] ^ [Number]

Yes

==

=

如果两个操作数有相同的值,则返回true;否则,返回false

[Quantity] == 10

Yes

!=

如果操作数没有相同的值,则返回true;否则,返回false

[Country] != 'France'

Yes

<

小于操作符。用于比较表达式。

[UnitPrice] < 20

Yes

<=

小于或等于运算符。用于比较表达式。

[UnitPrice] <= 20

Yes

>=

大于或等于运算符。用于比较表达式.

[UnitPrice] >= 30

Yes

>

大于运算符。用于比较表达式。

[UnitPrice] > 30

Yes

In (,,,)

测试对象中是否存在属性。

[Country] In ('USA', 'UK', 'Italy')

-

Between (,)

指定要测试的范围。如果一个值大于或等于第一个操作数而小于或等于第二个操作数,则返回true

[Quantity] Between (10, 20)

Yes

And

&&

对两个布尔表达式执行逻辑连接。

[InStock] And ([ExtendedPrice]> 100)

[InStock] && ([ExtendedPrice]> 100)

Yes

Or

||

对两个布尔表达式执行逻辑析取。

[Country]=='USA' Or [Country]=='UK'

[Country]=='USA' || [Country]=='UK'

Yes

~

对数值表达式执行按位否定.

~[Roles] = 251

-

Not

!

对布尔表达式执行逻辑否定。

Not [InStock]

![InStock]

Yes

+

返回数值表达式的值(一元运算符)

+[Value] = 10

Yes

-

返回数值表达式值的负数(一元运算符)

-[Value] = 20

Yes

Is Null

如果表达式是不引用任何对象的空引用,则返回true

[Region] is null

Yes

#Functions

Aggregate Functions

Function

Description

Example

XLS(x) Format Export-Friendly See Note

Avg(Value)

计算集合中值的平均值。

[Products].Avg([UnitPrice])

-

Count()

返回集合中对象的数量。

[Products].Count()

-

Exists()

确定对象是否存在于集合中。

[Categories][[CategoryID] == 7].Exists()

-

Max(Value)

返回集合中的最大表达式值。

[Products].Max([UnitPrice])

-

Min(Value)

返回集合中的最小表达式值。

[Products].Min([UnitPrice])

-

Single()

从包含不多于一个对象的集合中返回单个对象。
如果集合包含更多对象,则使用Condition属性指定条件。集合必须只包含一个满足条件的对象;否则,函数的行为是未定义的(函数可能返回意外值或抛出异常)
可以将表达式作为参数传递:[Collection][Condition]. single (expression)
该函数返回在满足指定条件的对象上计算的表达式值(可选)

[Accounts].Single() is not null

[Collection].Single([Property1]) - returns the found object's property value.

-

Sum(Value)

返回集合中所有表达式值的和。

[Products].Sum([UnitsInStock])

-

A custom aggregate function

根据自定义聚合函数返回集合的自定义表达式值。
您可以直接调用该函数,也可以将其作为参数传递。

Call a Custom Aggregate Function

-

Date-time Functions

Function

Description

Example

XLS(x) Format Export-Friendly See Note

AddDays(DateTime, DaysCount)

返回一个日期时间值,该值是指定日期时间的指定天数。

AddDays([OrderDate], 30)

Yes

AddHours(DateTime, HoursCount)

返回一个日期时间值,该值是指定日期时间的指定小时数。

AddHours([StartTime], 2)

Yes

AddMilliSeconds(DateTime, MilliSecondsCount)

返回一个日期时间值,该值是指定日期时间的指定毫秒数

AddMilliSeconds(([StartTime], 5000))

-

AddMinutes(DateTime, MinutesCount)

返回一个日期时间值,该值是指定日期时间的指定分钟数。

AddMinutes([StartTime], 30)

Yes

AddMonths(DateTime, MonthsCount)

返回一个日期时间值,该值是指定日期时间的指定月数

AddMonths([OrderDate], 1)

Yes

AddSeconds(DateTime, SecondsCount)

返回一个日期时间值,该值是来自指定日期时间的指定秒数。

AddSeconds([StartTime], 60)

Yes

AddTicks(DateTime, TicksCount)

返回一个日期时间值,该值是来自指定日期时间的指定节拍数。

AddTicks([StartTime], 5000)

-

AddTimeSpan(DateTime, TimeSpan)

返回来自给定时间pan的指定日期时间的日期时间值。

AddTimeSpan([StartTime], [Duration])

-

AddYears(DateTime, YearsCount)

返回一个日期时间值,该值是指定日期时间的指定年数。

AddYears([EndDate], -1)

Yes

DateDiffDay(startDate, endDate)

两个指定日期之间的天数差异(不考虑时间部分)

DateDiffDay([StartTime], Now())

Yes

DateDiffHour(startDate, endDate)

两个指定日期之间的小时差(不考虑分钟)

DateDiffHour([StartTime], Now())

Yes

DateDiffMilliSecond(startDate, endDate)

返回两个非空日期之间的毫秒边界数

DateDiffMilliSecond([StartTime], Now())

-

DateDiffMinute(startDate, endDate)

返回两个非空日期之间的分钟边界数。

DateDiffMinute([StartTime], Now())

Yes

DateDiffMonth(startDate, endDate)

返回两个非空日期之间的月数边界

DateDiffMonth([StartTime], Now())

Yes

DateDiffSecond(startDate, endDate)

返回两个非空日期之间的第二个边界数。

DateDiffSecond([StartTime], Now())

Yes

DateDiffTick(startDate, endDate)

返回两个非空日期之间的标记边界数。

DateDiffTick([StartTime], Now())

-

DateDiffYear(startDate, endDate)

返回两个非空日期之间的年份边界。

DateDiffYear([StartTime], Now())

Yes

GetDate(DateTime)

从定义的日期时间中提取日期.

GetDate([OrderDateTime])

Yes

GetDay(DateTime)

从定义的日期时间中提取一天。

GetDay([OrderDate])

Yes

GetDayOfWeek(DateTime)

从定义的日期时间中提取一周中的一天。

GetDayOfWeek([OrderDate])

Yes

GetDayOfYear(DateTime)

从定义的日期时间中提取一年中的一天。

GetDayOfYear([OrderDate])

Yes

GetHour(DateTime)

从定义的日期时间中提取一个小时

GetHour([StartTime])

Yes

GetMilliSecond(DateTime)

从定义的日期时间中提取毫秒。

GetMilliSecond([StartTime])

-

GetMinute(DateTime)

从定义的日期时间中提取分钟.

GetMinute([StartTime])

Yes

GetMonth(DateTime)

从定义的日期时间中提取一个月。

GetMonth([StartTime])

Yes

GetSecond(DateTime)

从定义的日期时间中提取秒。

GetSecond([StartTime])

Yes

GetTimeOfDay(DateTime)

以刻度从定义的日期时间中提取一天的时间。

GetTimeOfDay([StartTime])

-

GetYear(DateTime)

从定义的日期时间中提取一年。

GetYear([StartTime])

Yes

IsApril(DateTime)

如果指定的日期在四月内,则返回True

IsApril([OrderDate])

Yes

IsAugust(DateTime)

如果指定日期在8月份内,则返回True

IsAugust([OrderDate])

Yes

IsDecember(DateTime)

如果指定的日期在12月份内,则返回True

IsDecember([OrderDate])

Yes

IsFebruary(DateTime)

如果指定日期在2月份内,则返回True

IsFebruary([OrderDate])

Yes

IsJanuary(DateTime)

如果指定的日期在1月份内,则返回True

IsJanuary([OrderDate])

Yes

IsJuly(DateTime)

如果指定日期在7月份内,则返回True

IsJuly([OrderDate])

Yes

IsJune(DateTime)

如果指定日期在6月以内,则返回True

IsJune([OrderDate])

Yes

IsLastMonth(DateTime)

如果指定日期位于前一个月内,则返回True

IsLastMonth([OrderDate])

Yes

IsLastYear(DateTime)

如果指定日期位于前一年内,则返回True

IsLastYear([OrderDate])

Yes

IsMarch(DateTime)

如果指定日期在3月份内,则返回True

IsMarch([OrderDate])

Yes

IsMay(DateTime)

如果指定的日期落在五月内,返回真。

IsMay([OrderDate])

Yes

IsNextMonth(DateTime)

如果指定日期位于下个月内,则返回True

IsNextMonth([OrderDate])

Yes

IsNextYear(DateTime)

如果指定的日期位于下一年内,则返回True

IsNextYear([OrderDate])

Yes

IsNovember(DateTime)

如果指定的日期在11月之内,则返回True

IsNovember([OrderDate])

Yes

IsOctober(DateTime)

如果指定日期在10月份内,则返回True

IsOctober([OrderDate])

Yes

IsSameDay(DateTime)

如果指定的日期/时间值在同一天内,则返回True

IsSameDay([OrderDate])

Yes

IsSeptember(DateTime)

如果指定日期在9月份内,则返回True

IsSeptember([OrderDate])

Yes

IsThisMonth(DateTime)

如果指定的日期位于当前月份内,则返回True

IsThisMonth([OrderDate])

Yes

IsThisWeek(DateTime)

如果指定的日期位于当前周内,则返回True

IsThisWeek([OrderDate])

Yes

IsYearToDate(DateTime)

如果指定的日期位于年到日期间内,则返回True。此期间从当年的第一天开始,一直持续到当前日期(包括当前日期)

IsYearToDate([OrderDate])

Yes

IsThisYear(DateTime)

如果指定日期位于当前年度内,则返回True.

IsThisYear([OrderDate])

Yes

LocalDateTimeDayAfterTomorrow()

返回与后天对应的日期-时间值。

AddDays(LocalDateTimeDayAfterTomorrow(), 5)

Yes

LocalDateTimeLastMonth()

返回与前一个月的第一天对应的日期时间值。

AddMonths(LocalDateTimeLastMonth(), 5)

Yes

LocalDateTimeLastWeek()

返回与前一周的第一天对应的日期-时间值。

AddDays(LocalDateTimeLastWeek(), 5)

Yes

LocalDateTimeLastYear()

返回与前一年的第一天对应的日期时间值.

AddYears(LocalDateTimeLastYear(), 5)

Yes

LocalDateTimeNextMonth()

返回对应于下个月的第一天的日期-时间值。

AddMonths(LocalDateTimeNextMonth(), 5)

Yes

LocalDateTimeNextWeek()

返回对应于下一周第一天的日期-时间值。

AddDays(LocalDateTimeNextWeek(), 5)

Yes

LocalDateTimeNextYear()

返回对应于下一年的第一天的日期-时间值。

AddYears(LocalDateTimeNextYear(), 5)

Yes

LocalDateTimeNow()

返回与当前时间时刻对应的日期-时间值。

AddDays(LocalDateTimeNow(), 5)

Yes

LocalDateTimeThisMonth()

返回与当前月份的第一天对应的日期-时间值。

AddMonths(LocalDateTimeThisMonth(), 5)

Yes

LocalDateTimeThisWeek()

返回与当前星期的第一天对应的日期-时间值。

AddDays(LocalDateTimeThisWeek(), 5)

Yes

LocalDateTimeThisYear()

返回与当前年度的第一天对应的日期-时间值。

AddYears(LocalDateTimeThisYear(), 5)

Yes

LocalDateTimeToday()

返回对应于今天的日期-时间值。

AddDays(LocalDateTimeToday(), 5)

Yes

LocalDateTimeTomorrow()

返回与明天对应的日期-时间值。

AddDays(LocalDateTimeTomorrow(), 5)

Yes

LocalDateTimeTwoMonthsAway()

返回与下一个月的第一天对应的日期时间值。

AddMonths(LocalDateTimeTwoMonthAway(), 5)

Yes

LocalDateTimeTwoWeeksAway()

返回对应于下一周第一天的日期时间值。

AddDays(LocalDateTimeTwoWeeksAway(), 5)

Yes

LocalDateTimeTwoYearsAway()

返回对应于下一年的第一天的日期时间值。

AddYears(LocalDateTimeTwoYearsAway(), 5)

Yes

LocalDateTimeYearBeforeToday()

返回与一年前的日期对应的日期时间值。

AddYears(LocalDateTimeYearBeforeToday(), 5)

Yes

LocalDateTimeYesterday()

返回与昨天对应的日期-时间值。

AddDays(LocalDateTimeYesterday(), 5)

Yes

Now()

返回当前系统日期和时间。

AddDays(Now(), 5)

Yes

Today()

返回当前日期。不管实际时间是什么,这个函数都会返回当前日期的午夜。

AddMonths(Today(), 1)

Yes

UtcNow()

返回当前系统日期和时间,表示为协调世界时(UTC)

AddDays(UtcNow(), 7)

-

Logical Functions

Function

Description

Example

XLS(x) Format Export-Friendly See Note

Iif(Expression1, True_Value1, ..., ExpressionN, True_ValueN, False_Value)

根据逻辑表达式的值返回多个指定值中的一个。
该函数可以接受2N+1个参数(N -指定逻辑表达式的数量):
·每个参数指定了一个奇怪的逻辑表达式;
·甚至每个参数指定了返回的值如果前面的表达式值为真;

Iif(Name = 'Bob', 1, 0)

Iif(Name = 'Bob', 1, Name = 'Dan', 2, Name = 'Sam', 3, 0)

Yes

IsNull(Value)

如果指定的值为空,则返回真.

IsNull([OrderDate])

Yes

IsNull(Value1, Value2)

如果没有设置为NULL,则返回Value1;否则,返回Value2

IsNull([ShipDate], [RequiredDate])

-

IsNullOrEmpty(String)

如果指定的字符串对象为NULL或空字符串,则返回True;否则,返回False

IsNullOrEmpty([ProductName])

Yes

Math Functions

Function

Description

Example

XLS(x) Format Export-Friendly See Note

Abs(Value)

返回给定数值表达式的绝对正值。

Abs(1 - [Discount])

Yes

Acos(Value)

返回数字的反余弦(以弧度表示的角度,其余弦是给定的浮点数表达式)

Acos([Value])

Yes

Asin(Value)

返回数值的反正弦值(以弧度表示的角度,其正弦值为给定的浮点表达式)

Asin([Value])

Yes

Atn(Value)

返回数字的反正切(以弧度表示的角度,其正切为给定的浮点数表达式)

Atn([Value])

Yes

Atn2(Value1, Value2)

返回其正切为两个指定数值(以弧度表示)的商的角度

Atn2([Value1], [Value2])

Yes

BigMul(Value1, Value2)

返回一个Int64,其中包含两个指定的32位数字的完整乘积。

BigMul([Amount], [Quantity])

-

Ceiling(Value)

返回大于或等于数值表达式的最小整数。

Ceiling([Value])

Yes

Cos(Value)

返回角度的余弦值,单位是弧度

Cos([Value])

Yes

Cosh(Value)

返回角度的双曲余弦,单位是弧度。

Cosh([Value])

Yes

Exp(Value)

返回浮点表达式的指数值。

Exp([Value])

Yes

Floor(Value)

返回小于或等于数值表达式的最大整数。

Floor([Value])

Yes

Log(Value)

返回指定数字的自然对数。

Log([Value])

Yes

Log(Value, Base)

返回指定基数中指定数字的对数。

Log([Value], 2)

Yes

Log10(Value)

返回指定数字的以10为底的对数。

Log10([Value])

Yes

Max(Value1, Value2)

返回指定值中的最大值.

Max([Value1], [Value2])

Yes

Min(Value1, Value2)

返回指定值中的最小值。

Min([Value1], [Value2])

Yes

Power(Value, Power)

返回升到指定幂次的指定数字。

Power([Value], 3)

Yes

Rnd()

返回一个小于1但大于或等于0的随机数。

Rnd()*100

Yes

Round(Value)

将给定值四舍五入为最接近的整数。

Round([Value])

Yes

Round(Value, Precision)

将给定值四舍五入为最接近的整数,或将其四舍五入为指定的小数位数。

Round([Value], 2)

Yes

Sign(Value)

返回给定表达式的正(+1)、零(0)或负(-1).

Sign([Value])

Yes

Sin(Value)

返回以弧度定义的角度的正弦值。

Sin([Value])

Yes

Sinh(Value)

返回以弧度定义的角度的双曲正弦值。

Sinh([Value])

Yes

Sqr(Value)

返回给定数字的平方根。

Sqr([Value])

-

Tan(Value)

返回以弧度定义的角度的正切值。

Tan([Value])

Yes

Tanh(Value)

返回以弧度定义的角度的双曲正切。

Tanh([Value])

Yes

ToDecimal(Value)

将值转换为等效的十进制数。

ToDecimal([Value])

-

ToDouble(Value)

将值转换为等效的64位双精度浮点数。

ToDouble([Value])

-

ToFloat(Value)

将值转换为等效的32位单精度浮点数。

ToFloat([Value])

-

ToInt(Value)

将值转换为等效的32位有符号整数。

ToInt([Value])

-

ToLong(Value)

将值转换为等效的64位有符号整数。

ToLong([Value])

-

String Functions

Function

Description

Example

XLS(x) Format Export-Friendly See Note

Ascii(String)

返回字符表达式中最左字符的ASCII码值。

Ascii('a')

-

Char(Number)

将整数ascii码转换为字符。

Char(65) + Char(51)

Yes

CharIndex(String1, String2)

返回String1String2中的起始位置,从零字符位置开始到字符串的末尾。

CharIndex('e', 'devexpress')

-

CharIndex(String1, String2, StartLocation)

返回String1String2中的起始位置,从StartLocation字符位置开始到字符串的末尾。

CharIndex('e', 'devexpress', 2)

-

Concat(String1, ... , StringN)

返回一个字符串值,该值包含当前字符串与任何其他字符串的连接。

Concat('A', ')', [ProductName])

Yes

Contains(String1, SubString1)

如果SubString1发生在String1中,返回True;否则,返回False

Contains([ProductName], 'dairy')

Yes

EndsWith(String1, SubString1)

如果String1的结尾匹配SubString1,则返回True;否则,返回False

EndsWith([Description], 'The end.')

Yes

Insert(String1, StartPosition, String2)

String2插入到String1中由StartPositon指定的位置

Insert([Name], 0, 'ABC-')

-

Len(Value)

返回一个整数,该整数包含字符串中的字符数或存储变量所需的名义字节数。

Len([Description])

Yes

Lower(String)

返回小写字符串。

Lower([ProductName])

Yes

PadLeft(String, Length)

将已定义字符串的字符左对齐,在其左侧填充空白字符,直到指定的总长度。

PadLeft([Name], 30)

-

PadLeft(String, Length, Char)

将定义的字符串的字符左对齐,用指定的字符填充其左侧,直到指定的总长度。

PadLeft([Name], 30, '<')

-

PadRight(String, Length)

将已定义字符串的字符右对齐,用空白字符填充其左侧,直到指定的总长度

PadRight([Name], 30)

-

PadRight(String, Length, Char)

将定义的字符串的字符右对齐,用指定的字符填充其左侧,直到指定的总长度。

PadRight([Name], 30, '>')

-

Remove(String, StartPosition)

从指定位置开始删除此实例中的所有字符。

Remove([Name], 3)

-

Remove(String, StartPosition, Length)

从此实例中删除指定数量的字符(从指定位置开始)

Remove([Name], 0, 3)

-

Replace(String1, SubString2, String3)

返回String1的副本,其中的SubString2已被替换为String3

Replace([Name], 'The ', '')

-

Reverse(String)

反转字符串中元素的顺序。

Reverse([Name])

-

StartsWith(String1, SubString1)

如果String1的开头匹配SubString1,则返回True;否则,假。

StartsWith([Title], 'The best')

Yes

Substring(String, StartPosition, Length)

从字符串中检索子字符串。子字符串从StartPosition开始并具有指定的长度。

Substring([Description], 2, 3)

-

Substring(String, StartPosition)

从字符串中检索子字符串。子字符串从StartPosition开始。

Substring([Description], 2)

-

ToStr(Value)

返回对象的字符串表示形式。

ToStr([ID])

-

Trim(String)

从字符串中删除所有的前导和末尾空格字符。

Trim([ProductName])

Yes

Upper(String)

返回大写字符串。

Upper([ProductName])

Yes

NOTE

您可以在FunctionOperatorType 枚举描述中找到一组完整的可用函数操作符。

#Collection Elements Verification

使用括号"[]"检查集合是否包含满足条件的元素。如果Accounts集合包含至少一个满足[Amount] == 100条件的元素,则下面的表达式返回true:

[Accounts][[Amount] == 100]

T如果帐户集合为空,下面的表达式返回false:

[Accounts][]

#Parent Relating Operator

使用父关联运算符('^'字符)来引用在子元素上下文中写的表达式中的父元素。 您可以连续应用此操作符来导航多个父关系。在下面的表达式中,RegistrationDate”字段指客户(订单的父订单),“Date”字段指订单。如果在父客户注册当天至少有一个订单,则该表达式返回true:

"[Orders][[^.RegistrationDate] == Date]"

#Grouping Clauses with Brackets

使用方括号确保表达式返回预期的结果是很重要的例如,以下Customer类型对象的表达式返回所有的客户,其中帐户的日期为8/25/2006,帐户的金额为100:

[Accounts][[Date] == #8/25/2006#] && [Accounts][[Amount] == 100]

按照下面的示例构造表达式,搜索日期为2006825日且金额为100的所有客户:

[Accounts][[Date] == #8/25/2006# && [Amount] == 100]

#运算符的优先级

当表达式包含多个运算符时,它们的优先级控制表达式元素的计算顺序。

  • Literal values
  • Parameters
  • Identifiers
  • OR (left-associative)
  • AND (left-associative)
  • '.' relationship qualifier (left-associative)
  • ==, !=
  • <, >, <=, >=
  • -, + (left-associative)
  • *, /, % (left-associative)
  • NOT
  • unary -
  • In
  • Iif
  • Trim(), Len(), Substring(), IsNull()
  • '[]' (for set-restriction)
  • '()'

可以通过使用括号对元素进行分组来更改默认优先级。例如,以下两个代码示例中的第一个操作符按默认顺序执行。在第二个代码示例中,首先执行加法操作,因为其关联的元素用括号分组,最后执行乘法操作。

Accounts[Amount == 2 + 48 * 2]

Accounts[Amount == (2 + 48) * 2]

#大小写敏感性

运算符不区分大小写。尽管字段值的大小写敏感性取决于数据源。
NOTE

数据源影响某些操作符的行为。例如,默认情况下,SQL Server Express 2005被配置为不区分大小写。在本例中,以下表达式的计算结果总是为真:

Lower(Name) == Upper(Name)

#转义字

可以用转义字符(@符号)标记与关键字类似的字段名。在下面的表达式中,是CriteriaOperator。解析方法将@Or解释为名为"Or"的字段,而不是逻辑操作符Or

@Or = 'value'

#转义字符

使用反斜杠(\)作为表达式中字符的转义字符。例子:

  • \[
  • \\
  • \'

#检索引用属性

注意,虽然标准表达式可以返回对象引用,但并不是所有场景都支持这一点。完全支持通过直接引用属性返回对象引用,如下面的代码片段所示。

"Iif(Part is null, MyCustOrderLine.Part, Part)"

在此代码片段中,Part对象由Part或MyCustOrderLine组成。部分属性引用,正确返回。但是,不支持从函数检索引用属性。因此,下面的表达式不起作用。"Iif(Part is null, MyCustOrderLine, MyCustOrderLine2).Part"

#Note - Restrictions

在数据感知导出中将DevExpress数据网格和树列表控件(WinForms和WPF)导出为XLS(X)格式时,请注意以下限制

Mode:

只有包含导出友好函数的表达式才会导出为XLS(X)格式。参考上面表中对XLS(x)格式导出友好的列,了解是否可以将函数导出为XLS(x)格式。

确保XlsExportOptionsExUnboundExpressionExportModeXlsxExportOptionsExUnboundExpressionExportMode设置设置为AsFormula,以导出未绑定列的表达式。
请参阅以下连结以了解更多:

 

 

posted @ 2020-08-27 08:39  JohnnyLei  阅读(711)  评论(0)    收藏  举报