DataView LIKE函数的Integer值

时间:2013-08-21 17:39:24

标签: c# .net ado.net dataset dataview

我有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上使用..

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我不知道在ToString()的{​​{1}}字符串中包含Expression方法之类的其他任何方法,但这种方式有效:

RowFilter

注意 lbxTracks.DataSource = new DataView(das.Tables[0], "TrackID + '' LIKE '" + idNo + "'", "TrackName", DataViewRowState.CurrentRows); 这会在执行+ ''之前将您的TrackID变为string。它就像一个魅力。如果有人知道在LIKE字符串中的列上执行某些ToString()的其他方法,请在下面留言。我真的很感激:)

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

答案 1 :(得分:2)

只需使用=运算符:

"TrackID = "

无论如何,这就是你真正想要的。

答案 2 :(得分:0)

使用单引号和'%'作为

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

希望它有助于......

参考

RowFilter