网上有很多方法,比如利用视图处理:
//去掉重复行 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("PRo");
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过滤重复后的结果。
新闻热点
疑难解答