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); } }
浙公网安备 33010602011771号