Skip to main content

compare two datatable in asp.net without linq

 public string CompareTwoDataTable(DataTable dt1, DataTable dt2)
        {
            string bothequal = "";

            if (dt1.Columns.Count == 9 && dt2.Columns.Count == 9)
            {
                dt1.Columns.RemoveAt(4);  // remove time column
                dt2.Columns.RemoveAt(4);  // remove time column

                int dt1rows = dt1.Rows.Count;
                int dt2rows = dt2.Rows.Count;
                int dt1columns = dt1.Columns.Count;
                int dt2columns = dt2.Columns.Count;
                int secondcount = 0;
                int firstcount = 0;
                ArrayList firstarray = new ArrayList(); // from centre and can contain duplicate
                ArrayList second = new ArrayList();  // to fill table from database
                ArrayList first = new ArrayList(); // to fill table from from file upload by bank



                if ((dt1rows <= dt2rows) && (dt1columns == dt2columns)) // fill arraylist from file to compare
                {
                    foreach (DataRow vdr in dt1.Rows)
                    {
                        string rowvalue = "";
                        for (int h = 0; h < dt1columns; h++)
                        {
                            if (h == 3)
                            {
                                int ddnumber = Convert.ToInt32(vdr[h].ToString()); // to avoid extra zeros in front
                                rowvalue += ddnumber.ToString() + "---";
                            }
                            else
                            {
                                rowvalue += vdr[h].ToString() + "---";
                            }
                        }
                        firstarray.Add(rowvalue);
                    }


                    // remove duplicates if any present from file
                    foreach (string aString in firstarray)
                    {
                        if (!first.Contains(aString))
                        {
                            first.Add(aString);
                        }
                    }
                    firstcount = first.Count;



                    // fill arraylist from database to compare
                    foreach (DataRow vdr in dt2.Rows)
                    {
                        string rowvalue = "";
                        for (int h = 0; h < dt1columns; h++)
                        {
                            if (h == 3)
                            {
                                int ddnumber = Convert.ToInt32(vdr[h].ToString()); // to avoid extra zeros in front
                                rowvalue += ddnumber.ToString() + "---";
                            }
                            else
                            {
                                rowvalue += vdr[h].ToString() + "---";
                            }
                        }
                        second.Add(rowvalue);
                    }
                    secondcount = second.Count;
                }



                if (firstcount.ToString() == "0")
                {
                    bothequal = "Either File is tampered or invalid File or Empty File !!";
                }
                else if (firstarray.Count.ToString() != firstcount.ToString())
                {
                    bothequal = "File Contains Duplicate Rows or File is tempered !!";
                }
                else
                {
                    // check for content same
                    if (firstcount.ToString() != "0" && secondcount.ToString() != "0")
                    {
                        foreach (string ss in first)
                        {
                            if (!second.Contains(ss))
                            {
                                ArrayList errorrow = new ArrayList(); // record errored row from file as it mismatch
                                string errorstring = ss.Replace("---", "$");
                                char[] splitter = { '$' };
                                errorrow.AddRange(errorstring.Split(splitter));
                                bothequal = "Centre Code: " + errorrow[0].ToString() + " with Registration Number " + errorrow[1] + " ,Student Name : " + errorrow[2].ToString() + " ,DD No.: " + errorrow[3].ToString() + " is invalid or does not match with Deposit Number or File is tempered";
                                break;

                            }
                        }
                    }
                    else
                    {
                        bothequal = "Either File is tampered or invalid File";
                    }
                }
            }
            else
            {
                bothequal = "Either File is tampered or invalid File";
            }
            return bothequal;

        }

Comments