これは私のコードです:
// 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)の場合は、次の例外が発生します。演算子 '='は、オペランドタイプ 'Decimal'および 'String。この問題を解決するにはどうすればよいですか?
パラメーター化されたクエリを使用してパラメーター文字列値として渡すため、このパラメーターの型は文字列であり、オペランドの型でエラーが発生します。
次のように、10進値を渡すだけで解決する
dgvLoadTable.DataSource = EntityName
.TableName
.Where(columnName + " = @0", int.Parse(searchValue) )
.ToList();