我已經創建了一個解決方案,它讀取當前大小爲20-30 mb的大型csv文件,我試圖根據用戶選擇的某些列值刪除重複的行運行時間使用尋找重複行的常用技術,但速度太慢,看起來程序根本無法工作。從大csv文件刪除重複的記錄C#.Net
什麼其他的技術可以被應用到從CSV文件
這裏刪除重複記錄的代碼,絕對是我做錯了什麼
DataTable dtCSV = ReadCsv(file, columns); //columns is a list of string List column DataTable dt=RemoveDuplicateRecords(dtCSV, columns); private DataTable RemoveDuplicateRecords(DataTable dtCSV, List<string> columns) { DataView dv = dtCSV.DefaultView; string RowFilter=string.Empty; if(dt==null) dt = dv.ToTable().Clone(); DataRow row = dtCSV.Rows[0]; foreach (DataRow row in dtCSV.Rows) { try { RowFilter = string.Empty; foreach (string column in columns) { string col = column; RowFilter += "[" + col + "]" + "='" + row[col].ToString().Replace("'","''") + "' and "; } RowFilter = RowFilter.Substring(0, RowFilter.Length - 4); dv.RowFilter = RowFilter; DataRow dr = dt.NewRow(); bool result = RowExists(dt, RowFilter); if (!result) { dr.ItemArray = dv.ToTable().Rows[0].ItemArray; dt.Rows.Add(dr); } } catch (Exception ex) { } } return dt; }
20-30 MB太小,如果你正確地做的話會導致某些東西非常慢,所以我假設你不是。分享一些代碼。 – Jon 2011-03-11 11:50:19
我看到你發現異常的事件有多少,他們可能是一個主要的放緩! – Peter 2011-03-11 12:02:24
實際上現在沒有例外 – Sandhurst 2011-03-11 12:05:08