程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 比較DataTable中新舊數據

比較DataTable中新舊數據

編輯:C#入門知識


內容不寫了,代碼上都做了寫注釋。

  1   /**//// <summary>
  2        /// 比較兩個數據表,並返回比較結果表
  3        /// 比較條件:
  4        /// 1.兩個表結構相同;
  5        /// 2.兩個表排序都是按主鍵順序排序;
  6        /// 3.兩個表都不為空;
  7        /// </summary>
  8        /// <param name="newTable">新數據</param>
  9        /// <param name="oldTable">舊數據</param>
 10        /// <param name="parmaryKey">表主鍵名稱</param>
 11        /// <param name="colState">狀態列名稱</param>
 12        /// <param name="stateValue">不相同時狀態值</param>
 13        /// <returns>結果數據表  </returns>
 14        public static DataTable CompareData(
 15            this DataTable newTable,
 16            DataTable oldTable,
 17            string parmaryKey,
 18            string colState,
 19            object stateValue)
 20        {
 21            int newTableCount = newTable.Rows.Count;
 22            int oldTableCount = oldTable.Rows.Count;
 23
 24            /**/////比較結果表
 25            DataTable resultTable = newTable.Clone();
 26
 27            int i = 0, j = 0;
 28            do
 29            {
 30                DataRow dr1 = null;
 31                DataRow dr2 = null;
 32
 33                /**/////結果行
 34                DataRow rDr = resultTable.NewRow();
 35
 36                /**/////如果超出舊表,則新表所有其他列進行添加
 37                if (j < oldTableCount)
 38                {
 39                    dr2 = oldTable.Rows[j];
 40                }
 41                else
 42                {
 43                    for (int k = i; k < newTableCount; k++)
 44                    {
 45                        DataRow rDr2 = resultTable.NewRow();
 46                        rDr2.ItemArray = newTable.Rows[k].ItemArray;
 47                        resultTable.Rows.Add(rDr2);
 48                    }
 49                    /**/////添加完成後退出
 50                    break;
 51                }
 52
 53                /**/////如果超出新表,則將舊表剩余數據設置狀態值並添加到結果表中
 54                if (i < newTableCount)
 55                {
 56                    dr1 = newTable.Rows[i];
 57                }
 58                else
 59                {
 60                    for (int k = j; k < oldTableCount; k++)
 61                    {
 62                        DataRow rDr2 = resultTable.NewRow();
 63                        rDr2.ItemArray = oldTable.Rows[k].ItemArray;
 64                        rDr2[colState] = stateValue;
 65                        resultTable.Rows.Add(rDr2);
 66                    }
 67                    /**/////添加完成後退出
 68                  &nbs

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved