2014-12-09 5 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) он дает следующее исключение: Operator '=' несовместим с типами операндов «Десятичный» и «String». Как я могу решить эту проблему?

+0

кажется мне, как вы пытаетесь включить параметр. Параметры примечания не могут начинаться с числовых или символических символов (подобно переменным). – jbutler483

+0

С кодом в вашем примере searchValue всегда является строкой. – Magnus

+0

Это то, о чем я думал, тогда почему это бросает исключение? Он также не работает с DateTime. – Paradox

ответ

0

Вы используете параметризованный запрос и передаете как значение строки параметра, поэтому этот параметр имеет строку типа и вы получаете ошибку с типами операндов.

для решения просто передать десятичное значение, как

dgvLoadTable.DataSource = EntityName 
    .TableName 
    .Where(columnName + " = @0", int.Parse(searchValue)) 
    .ToList(); 
Смежные вопросы