不错,是个好方法,再排序一下就更好了DataView dv = dt.DefaultView; dv.Sort = "create_time"; dtCopy = dv.ToTable();
不过第二种方法后面能在详细一点吗?就是说你假设有三个列 id name time 1 2 3 4 5 如果是字段相同,就直接两张表加上去,不相同但只有TIME类型是相同的,那就dt.Columns.Add("Name", typeof(string));这样添加第二张表的列,然后再加上去,再按我上面的排序一下,就得到了理想的表了。你想合并啊删除什么的随你后面操作。
dv.Sort = "create_time";
dtCopy = dv.ToTable();
不过第二种方法后面能在详细一点吗?就是说你假设有三个列
id name time
1
2
3
4
5
如果是字段相同,就直接两张表加上去,不相同但只有TIME类型是相同的,那就dt.Columns.Add("Name", typeof(string));这样添加第二张表的列,然后再加上去,再按我上面的排序一下,就得到了理想的表了。你想合并啊删除什么的随你后面操作。
之前合并表这个我能理解,但是就是后面对于合并后的表,我怎么判断原先dt2中的pctime与原先dt1中的哪一条pctime的值相差最小呢?(原先dt1中有一个字段status,里面全部为1,dt2中status字段全为2)
先把datatable里的数据取出来,转换成datetime类型
然后datetime-datetime=timespan
之前合并表这个我能理解,但是就是后面对于合并后的表,我怎么判断原先dt2中的pctime与原先dt1中的哪一条pctime的值相差最小呢?(原先dt1中有一个字段status,里面全部为1,dt2中status字段全为2)
画个图给你看下你就知道了,下面是排序后的table的一部分:
pctime stauts
1 1
1 2
2 2
4 1
4 1
5 2
6 1
先循环,如果status为2则continue,如果status为1则比较跟它i+1与i-1行的绝对值,看哪个大,记录下来。然后你注意下临界值,不让溢出就可以了。
之前合并表这个我能理解,但是就是后面对于合并后的表,我怎么判断原先dt2中的pctime与原先dt1中的哪一条pctime的值相差最小呢?(原先dt1中有一个字段status,里面全部为1,dt2中status字段全为2)id status time(排序字段)
1 1 2014-5-8
2 2 2014-5-7
3 1 2014-5-7
4 2 2014-5-6
5 1 2014-5-6
......明白了吗?你只用循环一次,如果status是1,则timespan比较它的前一条数据和后一条数据的timespan哪个小即为最近。注意i=0只比较后一条,i=datatable.rows.count时则只比较前一条。