你这个最接近是什么概念?时间差最小吗?
这个需要遍历dt1与dt2后再做比较。
还有一种办法,如果数据格式是一样的话,把dt1与dt2合并成一个table,然后按照pctime排序,最后再根据你要的条件做合并或者删除。

解决方案 »

  1.   

    http://hi.baidu.com/zhang_zhu_1/item/e2fa2ee5ae1db32e86d9def6
      

  2.   

    不错,是个好方法,再排序一下就更好了DataView dv = dt.DefaultView;
                dv.Sort = "create_time";
                dtCopy = dv.ToTable();
      

  3.   


    不过第二种方法后面能在详细一点吗?就是说你假设有三个列
    id       name          time
    1
    2
    3
    4
    5
    如果是字段相同,就直接两张表加上去,不相同但只有TIME类型是相同的,那就dt.Columns.Add("Name", typeof(string));这样添加第二张表的列,然后再加上去,再按我上面的排序一下,就得到了理想的表了。你想合并啊删除什么的随你后面操作。
      

  4.   


    之前合并表这个我能理解,但是就是后面对于合并后的表,我怎么判断原先dt2中的pctime与原先dt1中的哪一条pctime的值相差最小呢?(原先dt1中有一个字段status,里面全部为1,dt2中status字段全为2)
      

  5.   

    时间相减啊.
    先把datatable里的数据取出来,转换成datetime类型
    然后datetime-datetime=timespan
      

  6.   


    之前合并表这个我能理解,但是就是后面对于合并后的表,我怎么判断原先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行的绝对值,看哪个大,记录下来。然后你注意下临界值,不让溢出就可以了。
      

  7.   


    之前合并表这个我能理解,但是就是后面对于合并后的表,我怎么判断原先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时则只比较前一条。