DataTable.Select()中的表达式可使用的函数

C# 创建DataTable using System.Data; //必须 方法1: DataTable dt = new DataTable("fruit"); dt.Columns.Add("ID", Type.GetType("System.Int32")); //第1列 dt.Columns[0].AutoIncrement = true; //自动增加 dt.Columns[0].AutoIncrem... 阅读详情

Expression 属性的一个用途是创建计算出的列。例如,若要计算税值,就要将单价乘以给定地区的税率。由于各地税率不同,不可能将单一的税率放在列中;于是便用 Expression 属性来计算这个值,如下面的 Visual Basic 代码所示:

DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"

第二个用途是创建聚合列。类似于计算出的值,聚合基于 DataTable 中的整个行集执行操作。一个简单的示例是对返回到集中的行数进行计数,这也就是您可能用来对某个特定销售人员完成的交易次数进行计数的方法,如下面的 Visual Basic 代码所示:

DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"

 

表达式语法

在创建表达式时,使用 ColumnName 属性来引用列。例如,如果一个列的 ColumnName 是“UnitPrice”(单价),而另一个是“Quantity”(数量),则表达式将是:

"UnitPrice * Quantity"

在为筛选器创建表达式时,将字符串放到单引号中:

"LastName = 'Jones'"

下面的字符是特殊字符,如下面所解释的,如果它们用于列名称中,就必须进行转义:

/n (newline)

/t (tab)

/r (carriage return)

~

(

)

#

/

/

=

>

<

+

-

*

%

&

|

^

'

"

[

]

如果列名称包含上面的字符之一,该名称必须用中括号括起来。例如,若要在表达式中使用名为“Column#”的列,应写成“[Column#]”:

Total * [Column#]

由于中括号是特殊字符,如果它是列名称的组成部分,必须使用斜杠 ("/") 将中括号转义。例如,名为“Column[]”的列应写成:

Total * [Column[/]]

(只有第二个中括号必须转义。)

用户定义的值

用户定义的值可以用在将与列值进行比较的表达式内。字符串值应放在单引号内。日期值应放在磅符号 (#) 内。对于数值,允许使用小数和科学记数法。例如:

"FirstName = 'John'"

"Price <= 50.00"

"Birthdate < #1/31/82#"

对于包含枚举值的列,将值强制转换为整数数据类型。例如:

"EnumColumn = 5"

运算符

使用布尔值 AND、OR 和 NOT 运算符时允许串联。可以使用括号来组合子句和强制优先级。AND 运算符优先于其他运算符。例如:

(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

在创建比较表达式时,允许使用下列运算符:

<

>

<=

>=

<>

=

IN

LIKE

在表达式中还支持下列算术运算符:

+(加)

-(减)

*(乘)

/(除)

%(模数)

字符串运算符

若要连接字符串,请使用 + 字符。字符串比较是否区分大小写由 DataSet 类的 CaseSensitive 属性的值来确定。但是,可以用 DataTable 类的 CaseSensitive 属性重写此值。

通配符

在 LIKE 比较中,* 和 % 两者可以互换地作为通配符。如果 LIKE 子句中的字符串包含 * 或 %,那么这些字符应用中括号([])对其进行转义。如果子句中有中括号,那么中括号字符应用中括号对其进行转义(例如 [[] 或 []])。在模式的开头和结尾,或者在模式的结尾,或在模式的开头允许使用通配符。例如:

"ItemName LIKE '*product*'"

"ItemName LIKE '*product'"

"ItemName LIKE 'product*'"

在字符串的中间不允许使用通配符。例如,不允许 'te*xt'。

父/子关系引用

通过在列名称前面加 Parent,就可以在表达式中引用父表。例如,Parent.Price 引用父表的名为 Price 的列。

通过在列名称前面加一个 Child,就可以在表达式中引用子表中的列。但是,因为子关系可以返回多行,所以必须在聚合函数中包括对子列的引用。例如,Sum(Child.Price) 将返回子表中名为 Price 的列的总和。

如果某个表有多个子表,则语法是:Child(RelationName)。例如,如果某个表有两个子表,它们的名称分别为 Customers 和 Orders,则 DataRelation 对象被命名为 Customers2Orders,引用将为:

Avg(Child(Customers2Orders).Quantity)

聚合

支持下列聚合类型:

Sum(求和)

Avg(平均)

Min(最小值)

Max(最大值)

Count(计数)

StDev(统计标准偏差)

Var(统计方差)。

聚合通常沿着关系执行。通过使用上面列出的函数之一和上面“父/子关系引用”中详述的子表列,来创建聚合表达式。例如:

Avg(Child.Price)

Avg(Child(Orders2Details).Price)

聚合也可以在单个表上执行。例如,若要为名为“Price”的列中的数字创建汇总,就用:

Sum(Price)

注意   如果使用一个表来创建聚合,将没有组合功能。相反,所有行都在列中显示相同的值。

如果表没有行,聚合函数将返回空引用(Visual Basic 中为 Nothing)。

数据类型总是可以通过检查列的 DataType 属性来确定。还可以使用 Convert 函数来转换数据类型,如下所示。

FUNCTIONS

还支持下列函数:

CONVERT

描述将给定表达式转换为指定的 .NET Framework 类型。
语法Convert(expression, type)
参数expression — 要转换的表达式。

type — 值将转换成的 .NET Framework 类型。

例如:myDataColumn.Expression="Convert(total, 'System.Int32')"

所有转换都是有效的,只有下列情况例外:Boolean 只能与 Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、String 和它本身相互转换。Char 只能与 Int32、UInt32、String 和它本身相互转换。DateTime 只能与 String 和它本身相互转换。TimeSpan 只能与 String 和它本身相互转换。

LEN

描述获取字符串的长度
语法LEN(expression)
参数expression — 要计算的字符串。

例如:myDataColumn.Expression="Len(ItemName)"

ISNULL

描述检查表达式并返回已检查的表达式或返回替换值。
语法ISNULL(expression, replacementvalue)
参数expression — 要检查的表达式。

replacementvalue — 如果表达式为空引用 (Nothing),则返回 replacementvalue。

例如:myDataColumn.Expression="IsNull(price, -1)"

IIF

描述根据逻辑表达式的结果,获取两个值之一。
语法IIF(expr, truepart, falsepart)
参数expr — 要计算的表达式。

truepart — 表达式为真时返回的值。

falsepart — 表达式为假时返回的值。

例如:myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')

TRIM

描述移除所有前导的和后缀的空格字符,如/r、/n、/t、' '
语法TRIM(expression)
参数expression — 要剪裁的表达式。

SUBSTRING

描述获取从字符串中的指定点开始,具有指定长度的子字符串。
语法SUBSTRING(expression, start,

length)

参数expression — 子字符串的源字符串。

start — 指定子字符串开始位置的整数。

length — 指定子字符串长度的整数。

例如:myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"

注意   可以向 Expression 属性分配一个空值或空字符串,来重置该属性。如果为表达式列设置了一个默认值,则在重置 Expression 属性之后,这个默认值就赋给所有以前填充过的行。
使用DataTable.Select 方法时,特殊字符的转义方法分享 代码如下:public static string Replace(string oldStr)        {            if (string.IsNullOrEmpty(oldStr))            {                return “”;            }            string str2 = Regex.Replace(oldStr, @”[\[\+\\\|\(\)\^\*\””\]’%~#-&]”, delegate(Match match)            {                if (match.Valu 立即下载

相关推荐

反激变压器设计学习笔记

反激变压器匝比感量设计

m0_55419117的博客 5262

DataColumn.Expression 属性

获取或设置表达式,用于筛选行、计算列中的值或创建聚合列。[Visual Basic]Public Property Expression As String[C#]public string Expression {get; set;}[C++]public: __property String* get_Expression();public: __property vo

2470

MODTRAN5.2.1安装配置

MODTRAN5.2.1安装配置

Home 4256

c# DataTable中Select的使用

1、  DataTable关于Select的使用。          (1)、查询量为常量                           DataTable   dt = new DataTable();                            dt.Select();

wxstar8的博客 8373

【图像超分】论文精读:Accelerating the Super-Resolution Convolutional Neural Network(FSRCNN)

作为应用于图像超分辨率 (SR) 的成功深度模型,超分辨率卷积神经网络 (SRCNN) [1,2] 在速度和恢复质量方面都比以前的手工制作的模型表现出更好的性能。然而,高计算成本仍然阻碍了它的实际使用,这需要实时性能(24 fps)。在本文中,我们旨在加速当前的 SRCNN,并提出了一种紧凑的沙漏形 CNN 结构,以实现更快和更好的 SR。我们从两个方面重新设计了SRCNN结构。首先,我们在网络末端引入了一个反卷积层,然后将映射直接从原始低分辨率图像(无插值)学习到高分辨率图像。其次,我们通过在映射之前缩小

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1万+

树莓派 RP2350B 开发环境搭建

本文介绍了树莓派RP2350B开发环境的搭建过程。

张一西的博客 286

C# Datatable的Select()用法与赋给新的DataTable

C# Datatable的Select()用法与赋给新的DataTable 关键内容 select 方法,返回值为 DataRow[] select这个方法,4个重载 1:Select() //默认筛选全部 2:Select(string filterExpression)//表达式,支持 and ,like , or ,>=,<=,=,>,< 3:Select(strin...

Transform 1万+

【部署优化篇三】《DeepSeek边缘计算实战:把目标检测模型塞进树莓派,让AI在巴掌大的设备上“开天眼“》

谁说只有超级计算机才能跑AI?今天咱们就要在树莓派上玩转DeepSeek目标检测,让这个巴掌大的小盒子变成会‘看’世界的智能终端!本文手把手教你从零开始,把最潮的目标检测模型塞进树莓派。全程高能预警,建议准备好你的树莓派4B/5和散热风扇,咱们这就开启边缘计算的魔法之旅!

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1306

uipath循环datatable_UiPath - DataTable.Select()

其实UiPath自带的Filter DataTable活动可以满足多数情况下的数据筛选,如果你感兴趣的话也可以学习一下通过DataTable的Select()方法实现。p.s.貌似Select()方法可能对RE Framework的考试有点用处~先简单介绍一下DataTable的Select()方法,不知道DataTable是啥的小伙伴请重修UiPath Level 1的相关课程。DataTabl...

weixin_39886841的博客 1865

Linux 内核中 ARP 协议的全链路解析:从触发机制到物理层发送

核心设计思想按需解析:减少不必要的 ARP 请求,降低网络负载。分层解耦:协议栈各层(邻居子系统、Netfilter、驱动)职责分离,提高扩展性。ARP的核心作用是将IP映射为MAC地址,确保数据链路层能正确封装帧。其触发时机围绕“未知MAC地址需求”展开,覆盖通信初始化、缓存更新、网络变更及维护等多种场景。

数字人生 367

基于VSCode+clangd插件打造高效C++开发环境之四:clangd配置

本文介绍如何配置VSCode+clangd插件进行高效C++开发。重点内容包括:1)生成compile_commands.json文件,通过ninja工具提取编译命令并使用gen_compdb脚本转换;2)配置clangd命令行参数,如设置后台索引、并行度等;3)编写.clangd配置文件,调整编译标志和诊断选项;4)添加.clang-format文件定义代码风格;5)在VSCode中添加远程服务器工作目录。配置完成后需重启clangd服务使更改生效。文章还提供了MTK/QCOM等不同平台生成compile

5070

DataTable中的Select()方法以及对DataTable的探索与发现

今天遇到了这样一个需求,移除掉以某列某个字符串开头的行。首先想到是如果数据存在数据库中,只需要在SQL语句使用LIKE关键字即可!那么能不能在DataTable中也使用参数的形式传入表达式呢?想想觉得应该可以,于是乎去查找帮助文档,一不小心看到了Select()方法:获取DataRow对象的数组。 Select()有4个重载方法 DataTable.Select()   获取所有DataRow对象的数组。 DataTable.Select(String) 按照主键顺序(如果没有主键,则按照添加顺

czyhsl 5465

058、时域降噪(Temporal Denoise):运动补偿与递归滤波在视频降噪中的应用

本文深入探讨了时域降噪(Temporal Denoise)技术在视频处理中的应用。作者通过车载环视项目案例,揭示了空域降噪的局限性,提出利用帧间信息进行降噪的核心思路。文章详细解析了递归滤波和运动补偿两大关键技术,指出递归滤波简单但易产生拖影,而运动补偿通过计算运动矢量解决此问题。作者还分享了多帧降噪方案的优势与算力挑战,并总结了噪声模型匹配、运动矢量一致性等实战调优经验。最后强调时域降噪需要与空域降噪平衡,指出调试工具的重要性,提出"在保证运动区域无鬼影的前提下追求信噪比"的实践原则,体现了算法复杂度与效

zzfmlxs的博客 92

java datatable select_dataTable.Select使用方法

1.len() 是字符函数只能对字符型的才能查询, 如果字段为text类型,就不能使用len()函数。不过可以使用 datalength()函数2.判断一个DataTable中的一个DataRow中的某一列为空值,不能使用if (Row.ItemArray[index]!=null) .........的形式需要使用DataRow类自带的一个函数IsNull。if(!DataRow.IsNull...

weixin_39827506的博客 572

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Datatable.Select()用法简介

  DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是   Select() Select(string filterExpression) Select(string filterExpression, string sort) Sel...

weixin_34013044的博客 1992

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Datatable的Select()方法简介

DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是   Select() Select(string filterExpression) Select(string filterExpression, string sort)

孤芳自赏 1272

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

DataTable.Select()方法的一个困惑,或者是一个bug?

介绍了一个ADO.NET中DataTable.Select()方法使用时的一个非常规现象:该方法的SQL语句可能与执行顺序或左右结合有关。

HuLihui's Blog 3457
上一篇: C#如何利用Stopwatch比较精确的测试算法运算时间
下一篇: c#组合算法整理
CutBug
博客等级 码龄20年 329粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值