Я хотел бы использовать Linq-To-DataTable:
decimal value;
if(decimal.TryParse(userInput, out value))
{
var filteredRows = from row in dt.AsEnumerable()
where row.Field<decimal>("Salary") == value
select row;
// if you want an array:
DataRow[] rows = filteredRows.ToArray();
}
Если вы настаиваете на использовании DataTable.Select
вы должны удалить апостроф:
DataRow[] rows = table.Select("Salary=" + userInput);
Но это предполагает, что входное значение использует английский формат (так, например, f.e. не используя другой десятичный разделитель, такой как запятая, которая даже вызывает SyntaxErrorException
).
Если тип столбца на самом деле string
вам нужно разобрать его, чтобы удвоить или десятичное:
var filteredRows = from row in dt.AsEnumerable()
where decimal.Parse(row.Field<string>("Salary")) == value
select row;
Но в этом CAE вы должны лучше исправить неправильный тип данных вместо этого.
Try {} для преобразования типа либо один, на другой, в случае успеха сравнивать ... –