在 DataTable.Select() 中将字符串值与 double 进行比较

Kir*_*lgi 2 c# sql datatable ado.net

我的数据表工资列是string列,用户以字符串格式给出输入值,例如userInput="1000". 但工资列中存储的数据如下图所示。如何将用户输入与数据表中存储的数据进行比较?

在此输入图像描述

我当前的代码是

DataRows[] rows = dt.Select("Salary='"+userInput+"'");
Run Code Online (Sandbox Code Playgroud)

ASh*_*ASh 5

为了避免格式问题,您应该更好地比较数值。DataTable选择过滤器支持Convert功能:

var dt = new DataTable();
dt.Columns.Add("Salary", typeof(string));

// test values
dt.Rows.Add("0.10000");
dt.Rows.Add(".1");
dt.Rows.Add("-.1");
dt.Rows.Add("1.1");

decimal salary;
string userInput = "0.10";
if (decimal.TryParse(userInput, out salary))
{           
    DataRow[] matchedRows = dt.Select("Convert(Salary, 'System.Decimal') = " + salary.ToString());
    foreach(var r in matchedRows)
        Console.WriteLine(r["Salary"]);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

.1
0.10000
Run Code Online (Sandbox Code Playgroud)