Exemple #1
0
        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);
                        }
                    }
                }
            }
        }
Exemple #2
0
        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);
                    }
                }
            }
        }