網上有很多方法,比如利用視圖處理:
//去掉重復行 DataView dv = table.DefaultView; table = dv.ToTable(true, new string[] { "name", "code" }); 此時table 就只有name、code無重復的兩行了,如果還需要id值則 table = dv.ToTable(true, new string[] { "id","name", "code" });//第一個參數true 啟用去重復,類似distinct但這種方法有個問題,就是我只要根據id過濾重復,但還要保留其他字段,這種方法是不行的新方法:
DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Columns.Add("name"); dt.Columns.Add(" dt.Rows.Add(new object[] { "1", "1", "11" }); dt.Rows.Add(new object[] { "1", "2", "111" }); dt.Rows.Add(new object[] { "1", "3", "1111" }); dt.Rows.Add(new object[] { "1", "4", "11111" }); dt.Rows.Add(new object[] { "2", "1", "111111" }); dt.Rows.Add(new object[] { "2", "2", "1111111" }); DataRow[] drs = dt.Copy().Select("", "id"); //用于存儲所有規格(不重復) object value = null; DataTable d = dt.Clone(); for (int i = 0; i < drs.Length; i++) { if (value == null || !value.Equals(drs[i]["id"].ToString())) { d.ImportRow(drs[i]); value = drs[i]["id"].ToString(); continue; } drs[i].Delete(); } 最終的d :就是根據id過濾重復后的結果。
新聞熱點
疑難解答