DataTable.Select()使用心得

有个DataTable内存表、一个传入的高度值a,我要从表中先尝试找到a对应的数据,会有三种情况:

1 存在正好对应a这个高度的数据  

2.如果没有正好对应的,则取a上下最近高度的两点数据,然后进行内差。

3.a可能不在此表高度范围内,就只能从此表中取第一条或最后一条数据

第一种方法:for或foreach循环遍历表,逐个比较a与表中字段(补偿点mm)的大小。这是最普通的做法,处理比较麻烦,运行速度比较慢

for (int j = 0; j < dataTable.Rows.Count; j++)

{

 DataRow dataRow = dataTable.Rows[j];

?? = dataRow["补偿点mm"].ToString();

...

}

第二种方法:用 dataTable.Select 方法。不仅逻辑上简单,而且效率上提高

DataRow[] foundRows = null;

foundRows = dtCom[i].Select("补偿点mm=" + oilHigh, "补偿点mm asc");  //参数1为筛选条件,参数2为指定的排序顺序

if (foundRows.Length != 0)

{

float result=Convert.ToSingle(foundRowsDown[0]["补偿值mm"].ToString());

}

else  

{

//上条DataRow,条件改为 "补偿点mm>" + oilHigh, "补偿点mm asc"

//下条DataRow,条件改为 "补偿点mm<" + oilHigh, "补偿点mm desc"

//分别判断上下两条数据是否存在,然后处理

....

}

比较起来,觉得后面的方法方便、巧妙,(*^__^*) 嘻嘻……

转载于:https://www.cnblogs.com/verna/archive/2011/01/07/1929560.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值