前言
一般要將 DataTable 重覆的資料,可以透過 DataView 的 ToTable
Method 中的 distinct 參數設定為 true ,就可以回傳 Distinct 過的 DataTable。例如,
1 | DataView dv1 = new DataView(dt); |
但如果資料多時,就會很慢很慢。 那怎麼辦呢?
解法
我們可以參考 DataView ToTable Vs Linq to find distinct ,改用 Linq 的 Distinct Method
測試資料及結果如下,
1 |
|
以下測試環境為 i7-8569U CPU @ 2.80GHz, 16G RAM, SSD
資料筆數為 100,000
資料欄位為 10
分別使用 AsEnumerable().Distinct
, AsEnumerable().GroupBy
及 DataView.ToTable(true,...
,結果如下,
可以發現,使用 DataView.ToTable 真的粉慢
- 註: 如果要將 IEnumerable
轉成 DataTable ,可以使用 CopyToDataTable () 這個 Extension Method哦! 例如上述範例,可以改成
1 | private static Tuple<int, long> NormalDataSetWithOutDataView(DataTable dt) |