去除DataTable重複資料的三種方法

來源:互聯網
上載者:User

標籤:

業務需求

最近做一個把來源資料庫的資料批次匯出到目標資料庫。來源資料庫是採集程式採集而來的未經處理資料庫,所以需要對其進行一些處理(過濾一些為空白,長度太短或太長,非法字元,重複資料)然後在進行入庫。

其中要避免目標庫插入重複資料。這重複資料可能是來源資料庫本身就有重複資料,還有就是已經插入避免重複插入。

過濾自身重複資料解決方案第一種:採用DataView.ToTable()方法DataView.ToTable 方法.NET Framework 2.0 其根據現有 DataView 中的行,建立並返回一個新的 DataTable。重載列表 
名稱 說明
DataView.ToTable () 根據現有 DataView 中的行,建立並返回一個新的 DataTable。

由 .NET Compact Framework 支援。

DataView.ToTable (String) 根據現有 DataView 中的行,建立並返回一個新的 DataTable。

由 .NET Compact Framework 支援。

DataView.ToTable (Boolean, String[]) 根據現有 DataView 中的行,建立並返回一個新的 DataTable。

由 .NET Compact Framework 支援。

DataView.ToTable (String, Boolean, String[]) 根據現有 DataView 中的行,建立並返回一個新的 DataTable。

由 .NET Compact Framework 支援。

執行個體代碼

 public static DataTable Distinct(DataTable dt, string[] filedNames)        {            DataView dv = dt.DefaultView;            DataTable DistTable = dv.ToTable("Dist", true, filedNames);            return DistTable;        }

 

第二種方法:迴圈遍曆+DataTable.Select()

利用for迴圈遍曆DataTable的資料行,利用DataTable.Select 方法判斷是否重複,如果重複,則利用DataTable.Rows.RemoveAt(Index)重複資料刪除的那一行。

具體看代碼。

程式碼範例

 public DataTable GetDistinctSelf(DataTable SourceDt, string filedName)        { for (int i = SourceDt.Rows.Count - 2; i > 0; i--)            {                DataRow[] rows = SourceDt.Select(string.Format("{0}=‘{1}‘", filedName, SourceDt.Rows[i][filedName]));                if (rows.Length > 1)                {                    SourceDt.Rows.RemoveAt(i);                }            }         return SourceDt;                }
第三種方法

利用雙迴圈遍曆(不推薦)

 public DataTable GetDistinctSelf(DataTable SourceDt, string filedName)        {            for (int i = SourceDt.Rows.Count - 2; i > 0; i--)            {                string title = SourceDt.Rows[0][filedName].ToString();                for (int j = i + 1; j > 0; i--)                {                    if (SourceDt.Rows[j][filedName].ToString() == title)                    {                        SourceDt.Rows.RemoveAt(i);                    }                }            }            return SourceDt;          }

 

去除DataTable重複資料的三種方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.