如何使值与 table 列上其范围内的行交互?

How to make a value interact with lines within its range on a table column?

我有一个像这样的数据表。

在某些时候,人们将被要求提供自己的测量值,可以是 -5 -4 -3 -2 -1 等等...一直到 35。

我需要在测量结果值之间进行插值。

我可以做这样的事情

double usermeasurement;
//user inserts the measurement in a textbox

if(usermeasurement <5)
{ //interpolation between line 1 and line 2 of the table
}

else if (usermeasurement <15)
{ //interpolation between line 2 and 3 of the table..
} 
// and so on...

我的编程问题是,是否有更简单、高级的方法使 usermeasurement 变量适合列 measurement

我可以制作自己的插值方法,但是有更简单的数学运算吗?

如果您在代码中从 DataTable 中获取它

int userInput = 7;

DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("Measurement", typeof(int)));
dataTable.Columns.Add(new DataColumn("Value", typeof(string)));

dataTable.Rows.Add(-5, "-0,1");
dataTable.Rows.Add(5, "0,2");
dataTable.Rows.Add(15, "0,5");
dataTable.Rows.Add(25, "0,7");
dataTable.Rows.Add(35, "0,9");

int min = Convert.ToInt32(dataTable.Compute("MIN(Measurement)", "Measurement > " + userInput.ToString()));
int max = Convert.ToInt32(dataTable.Compute("MAX(Measurement)", "Measurement < " + userInput.ToString()));
DataRow[] rows = dataTable.Select("Measurement = " + min.ToString() + " OR " + "Measurement = " + max.ToString());

如果您要查询数据库,请使用以下查询

SELECT * FROM Measurements WHERE Measurement = (select MIN(Measurement) from Measurements WHERE Measurement > 16) OR Measurement = (select MAX(Measurement) from Measurements WHERE Measurement < 16)