整数值上的 DataView LIKE 函数

Posted

技术标签:

【中文标题】整数值上的 DataView LIKE 函数【英文标题】:DataView LIKE function on Integer value 【发布时间】:2013-08-24 05:19:38 【问题描述】:

我有 Sql 表 Tracks,它保存着 TrackID 和 TrackName 等跟踪信息。我有带有文本框和列表框的 c# 应用程序。我使用 dataSet 来检索 sql 表,当我在文本框上写“3”时,我想在 TrackID 为“3”的列表框中获取轨道名称。我的代码如下:

lbxTracks.DataSource = new DataView(das.Tables[0], "TrackID LIKE " + idNo.ToString(), "TrackName", DataViewRowState.CurrentRows);

但是我收到一个错误,因为 LIKE 函数不能在 System.Int32 上使用..

有什么想法吗?

【问题讨论】:

【参考方案1】:

只需使用= 运算符:

"TrackID = "

这就是你真正想要的。

【讨论】:

这实际上回答了 OP 的 specific 问题,但是它没有回答一般问题,例如如果 OP 想要过滤 @987654323 怎么办@ 具有格式为11?22?33 的整数,因此应包括所有值,如111221331122213311322033、...(有很多)。所以解决方案是我们必须以某种方式将 int 转换为 string 并对其执行 LIKE。 @KingKing,你的例子比 OP 的例子要抽象得多,因此是理论上的。我相信我们可以找到一种方法,但正如你所说,在这种情况下我们不需要,所以 OP 只需要使用正确的运算符,是吗?【参考方案2】:

使用单引号和'%'作为

lbxTracks.DataSource = new DataView(das.Tables[0], 
                       "TrackID LIKE '%" + idNo + "%'", 
                       "TrackName", DataViewRowState.CurrentRows);

希望对你有帮助..

参考

RowFilter

【讨论】:

【参考方案3】:

我不知道有任何其他方法可以在 Expression 字符串中为 RowFilter 包含类似 ToString() 的方法,但这样可以:

lbxTracks.DataSource = new DataView(das.Tables[0], "TrackID + '' LIKE '" + idNo + "'", "TrackName", DataViewRowState.CurrentRows);

注意+ '' 这将在执行LIKE 之前将您的TrackID 转换为string。它就像一个魅力。如果有人知道在RowFilter 字符串中的列上执行某些ToString() 的另一种方法,请在下面发表评论。我真的很感激 :)

您应该使用string.Format() 来连接字符串,并注意%LIKE 表达式中的使用。我认为在这种情况下,如果您只想比较值的相等性(而不是格式),您可能需要使用正确的运算符(= 可以用于数字)。

【讨论】:

以上是关于整数值上的 DataView LIKE 函数的主要内容,如果未能解决你的问题,请参考以下文章

使用Tumblr Like按钮和无限滚动

Javascript函数返回未定义,预期整数值[重复]

在具有整数值的类中创建函数[重复]

RCPP Armadillo:在函数中打印整数值

asp.net如何对DataTable 或DataView进行统计,比如像用SQL函数里的Sum统计类似。

ListItem 的 items 属性上的 XTemplate 定义