2014-12-09 45 views
0

工作這是我的代碼:動態LINQ查詢不與數值

// Taken from combobox selection. 
string columnName = cboCrudSearchColumn.Text.ToString(); 

// Taken from textbox selection. 
string searchValue = txtCrudSearch.Text.ToString(); 

dgvLoadTable.DataSource = EntityName 
    .TableName 
    .Where(columnName + " = @0", searchValue) 
    .ToList(); 

現在,當searchValue是一個字符串能正常工作(例如:ABC),但是當它是一個數值(例如: 30)它給出以下例外:操作符'='與操作數類型'小數'和'字符串不兼容。我怎樣才能克服這個問題?

+0

我看來像你想有一個參數。注意參數不能以數字或符號字符開頭(很像變量)。 – jbutler483 2014-12-09 13:35:52

+0

使用示例中的代碼searchValue始終是一個字符串。 – Magnus 2014-12-09 13:47:27

+0

這就是我的想法,那爲什麼會拋出異常?它也不適用於DateTime。 – Paradox 2014-12-09 13:51:29

回答

0

您使用參數化查詢並將其作爲參數字符串值傳遞,因此此參數具有類型字符串,並且操作數類型會出錯。

解決只是傳遞十進制值,如

dgvLoadTable.DataSource = EntityName 
    .TableName 
    .Where(columnName + " = @0", int.Parse(searchValue)) 
    .ToList();