我有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上使用..
有什么想法吗?
答案 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);
希望它有助于......
参考