private static void reconcileDuplicates(string key, ReconcileResult result, List <string> lstIgnore, List <string> lstAmbiguousSortKey, DataTable tbl1, DataTable tbl2) { StringBuilder strBuf = new StringBuilder(); foreach (string i in lstAmbiguousSortKey) { if (strBuf.Length > 0) { strBuf.Append(" , "); } strBuf.Append(i); } DataView dv1 = new DataView(tbl1, key, strBuf.ToString(), DataViewRowState.CurrentRows); DataView dv2 = new DataView(tbl2, key, strBuf.ToString(), DataViewRowState.CurrentRows); if (dv1.Count != dv2.Count) { Console.WriteLine("Count mismatch in" + key); Console.WriteLine("Table1:" + dv1.Count + "\tTable2:" + dv2.Count); result.AddCountMismatch(key, new DataColumn("Different Count"), dv1.Count, dv2.Count); } else { for (int i = 0; i < dv1.Count; i++) { DataRow r1 = dv1[i].Row; DataRow r2 = dv2[i].Row; foreach (DataColumn c in tbl1.Columns) { if (lstIgnore.Contains(c.ColumnName)) { continue; } object obj1 = r1[c.ColumnName]; object obj2 = r2[c.ColumnName]; if (r1[c.ColumnName] != r2[c.ColumnName]) { if (Convert.IsDBNull(obj1) == false && Convert.IsDBNull(obj2) == false) { //if (c.DataType == typeof(string)) { if (obj1.ToString().Trim().Equals(obj2.ToString().Trim())) { continue; } } } string subKey = GetFilterString(r1, lstAmbiguousSortKey); //Console.WriteLine(key + ":" + subKey); result.Add(key + ":" + subKey, c, r1, r2, null); } } } } }
private static void reconcileCustomDuplicates(string tbl1_key, string tbl2_key, ReconcileResult result, Dictionary <string, string> dictCompareColumns, Dictionary <string, string> dictAmbigousSortKey, DataTable tbl1, DataTable tbl2, BaseReconcile reconcileMethod) { StringBuilder strBufTbl1 = new StringBuilder(); StringBuilder strBufTbl2 = new StringBuilder(); foreach (string i in dictAmbigousSortKey.Keys) { if (strBufTbl1.Length > 0) { strBufTbl1.Append(" , "); strBufTbl2.Append(" , "); } strBufTbl1.Append(i); strBufTbl2.Append(dictAmbigousSortKey[i]); } DataView dv1 = new DataView(tbl1, tbl1_key, strBufTbl1.ToString(), DataViewRowState.CurrentRows); DataView dv2 = new DataView(tbl2, tbl2_key, strBufTbl2.ToString(), DataViewRowState.CurrentRows); if (dv1.Count != dv2.Count) { Console.WriteLine("Count mismatch in" + tbl1_key); Console.WriteLine("Table1:" + dv1.Count + "\tTable2:" + dv2.Count); result.AddCountMismatch(tbl1_key, new DataColumn("Different Count"), dv1.Count, dv2.Count); } else { for (int i = 0; i < dv1.Count; i++) { DataRow r1 = dv1[i].Row; DataRow r2 = dv2[i].Row; foreach (string tbl1_column_name in dictCompareColumns.Keys) { reconcileMethod.simpleMatching(result, r1, r2, tbl1_column_name, dictCompareColumns[tbl1_column_name], tbl1_key); } } } }