首页 > 学院 > 开发设计 > 正文

DataTable去除重复行,根据某一字段进行distinct

2019-11-17 02:10:41
字体:
来源:转载
供稿:网友

DataTable去除重复行,根据某一字段进行distinct

网上有很多方法,比如利用视图处理:

 //去掉重复行 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过滤重复后的结果。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表