2013-08-21 14 views
3

我有Sql表格跟蹤信息,如TrackID和TrackName。我有c#應用程序與文本框和列表框。我使用dataSet來檢索sql表格,當我在文本框中寫入「3」時,我想獲取TrackID爲「3」的列表框上的軌道名稱。我的代碼如下:整數值的DataView LIKE函數

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

,但我得到一個錯誤之類的函數不能在System.Int32使用..

任何想法?

回答

4

我不知道任何其他方式,包括像ToString()方法Expression字符串爲RowFilter但這種方式它的工作原理:

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

注意+ ''這會變成你的TrackIDstring執行LIKE之前。它就像一個魅力。如果有人知道在RowFilter字符串的列上執行ToString()的另一種方法,請在下面留言。我真的很感激:) :)

你應該使用string.Format()連接字符串,並注意在LIKE表達式中使用%。我認爲在這種情況下,如果您只是想比較值(不是格式)中的相等性,您可能想要使用正確的運算符(=對於編號爲OK)。

2

只需使用=操作:

"TrackID = " 

這是你真正想要的要多。

+0

這實際上回答了OP的**特定**問題,但它並不回答一般問題,例如如果OP想要用格式爲「11」的整數過濾「TrackID」所以應該包括像「11122133」,「11222133」,「11322033」,...(有很多)的所有值。所以解決方法是,我們必須將'int'轉換爲'string'並對其執行LIKE。 –

+0

@KingKing,你的例子比OP更抽象,因此也是理論上的。我相信我們可以找到一種方法,但正如你所說的,在這種情況下,我們不需要這樣,OP只需要使用正確的操作符,是的? –

0

使用單引號和 '%' 作爲

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

希望它有助於..

參考

RowFilter