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

留言