1.2个datatable合并,并且去重

dt1.Merge(dt2);//合并
//去掉重复行
DataView dataView = new DataView(dt1);
string[] strComuns = { "列名1", "列名2", "列名3" };
dt1= dataView.ToTable(true, strComuns);

2.datatable去重

DataTable  dt=db.GetDt("select * from 表名");//获得datatable
DataView dv = new DataView(dt);
DataTable dt2 = dv.ToTable(true, "name,age,code");

虽然去重了,但是只能显示name,age,code。这3个列

3.datatable去重

 

//去重,同一个订单不能有2个或2个以上相同的条码,保留扫描时间最大的条码
            DataTable dtMiddle = new DataTable();
          dtMiddle.Columns.Add("OrderCode", typeof(string));//编号
            dtMiddle.Columns.Add("Barcode", typeof(string));//条码
            dtMiddle.Columns.Add("ScanTime", typeof(string));//时间
            dtMiddle.Columns.Add("dtID", typeof(string));//datatable的索引ID
            for (int k = dtImport.Rows.Count - 1; k >= 0; k--)
            {
                DataRow[] rowMiddles = dtMiddle.Select(string.Format("OrderCode='{0}' AND Barcode='{1}' ", dtImport.Rows[k]["OrderCode"].ToString().Trim(), dtImport.Rows[k]["Barcode"].ToString().Trim()));
                if (rowMiddles.Length > 0)
                {
                    DateTime ScanTime1 = Convert.ToDateTime(rowMiddles[0]["ScanTime"].ToString().Trim());
                    DateTime ScanTime2 = Convert.ToDateTime(dtImport.Rows[k]["ScanTime"].ToString().Trim());
                    if (DateTime.Compare(ScanTime1, ScanTime2) > 0)
                    {
                        dtImport.Rows.RemoveAt(k);
                    }
                    else
                    {
                        dtImport.Rows.RemoveAt(Convert.ToInt32(rowMiddles[0]["dtID"].ToString().Trim()));
                    }
                }
                else
                {
                    DataRow rowMiddle = dtMiddle.NewRow();
                    rowMiddle["OrderCode"] = dtImport.Rows[k]["OrderCode"].ToString().Trim();
                    rowMiddle["Barcode"] = dtImport.Rows[k]["Barcode"].ToString().Trim();
                    rowMiddle["ScanTime"] = dtImport.Rows[k]["ScanTime"].ToString().Trim();
                    rowMiddle["dtID"] = k;
                    dtMiddle.Rows.Add(rowMiddle);
                }
            }

 

 

 

 

posted on 2013-08-15 15:08  清风暮雨  阅读(1405)  评论(0)    收藏  举报