C# - Linq - DataTable刪除重複項/DataTable調整篩選
C# - Linq - DataTable刪除重複項/DataTable調整篩選
有時候DataTable資料重覆要刪掉
大部分的教學都透過DataTable 轉 DataView 再使用 DataView 的ToTable功能帶True
例如:
有個內容重複的Table1 透過下面兩行即可獲得不重複的Table1
DataView DataView1= Table1.DefaultView;
Table1 = DataView1.ToTable(true);
這個做法沒問題,但在資料量大概2萬筆的時候
大概要等1分鐘的處理吧...
慢到哭哭
所以後來改了寫法 透過Linq處理不用一秒 真是很快樂
Table1 = Table1 .AsEnumerable().GroupBy(p => p["姓名"]).SelectMany(p => p.GroupBy(s => s["身分證字號"]).SelectMany(ps => ps.GroupBy(l => l["出生年月"])).Select(x => x.First())).CopyToDataTable<DataRow>();
這段就是在做將Table1之中 姓名與身分證字號與出生年月都相同的資料,僅保留一份
也就達成了不重複資料!
外加如果要根據某列的結果篩選出新的Table可以這樣寫
Table1 = Table1 .AsEnumerable().Where(q => q.Field<string>("性別") != "F").CopyToDataTable<DataRow>();
這段是會篩選出列名稱[性別]中的資料不為F的列
快樂提升效能吧XD
留言
張貼留言