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类派生持久对象。
从类派生对象时,会自动为此对象启用XPO功能。例如,OptimisticLockingAttribute自动应用于从PersistentBase、XPBaseObject、XPCustomObject或XPObject类派生的对象。这将启用乐观锁定功能。但是,当对象从XPLiteObject类派生时,此功能将被禁用。
Class Name | Deferred Deletion | Optimistic Locking | Built-in OID key |
---|---|---|---|
PersistentBase | ![]() |
![]() |
![]() |
XPBaseObject | ![]() |
![]() |
![]() |
XPLiteObject | ![]() |
![]() |
![]() |
XPCustomObject | ![]() |
![]() |
![]() |
XPObject | ![]() |
![]() |
![]() |
TIP
我们建议您使用PersistentBase类作为WPF应用程序中持久类的基类。有关更多信息,请参阅WPF应用程序中的XPO最佳实践。
跨平台类库提供了标准语言,您可以在各种DevExpress产品中使用这些语言来构建表达式。表达式是使用CriteriaOperator解析的字符串。对一个CriteriaOperator对象进行解析,计算一个值。下表包含可以在表达式中使用的常量、运算符和函数。
下面的DevExpress产品扩展和/或覆盖此语法。下表列出了解释如何在这些产品中使用表达式的文章。
Product |
Article |
Reporting报告 |
|
Dashboard仪表板 |
|
Pivot Grid 主网格 |
|
eXpressApp Framework eXpressApp框架 |
|
eXpress Persistent Objects eXpressApp持久对象 |
Upcasting, Free Joins, How 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 |
|
[Price] == 25.0m |
Yes |
null |
表示不引用任何对象的空引用。 |
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() |
从包含不多于一个对象的集合中返回单个对象。 |
[Accounts].Single() is not null [Collection].Single([Property1]) - returns the found object's property value. |
- |
Sum(Value) |
返回集合中所有表达式值的和。 |
[Products].Sum([UnitsInStock]) |
- |
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) |
根据逻辑表达式的值返回多个指定值中的一个。 |
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) |
返回String1在String2中的起始位置,从零字符位置开始到字符串的末尾。 |
CharIndex('e', 'devexpress') |
- |
CharIndex(String1, String2, StartLocation) |
返回String1在String2中的起始位置,从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]
按照下面的示例构造表达式,搜索日期为2006年8月25日且金额为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)格式。
确保XlsExportOptionsEx。UnboundExpressionExportMode或XlsxExportOptionsEx。UnboundExpressionExportMode设置设置为AsFormula,以导出未绑定列的表达式。
请参阅以下连结以了解更多: