zoukankan      html  css  js  c++  java
  • 筛选DataTable行重复

      1  /// <summary>
      2         /// 验证Datatable是否已经实例
      3         /// </summary>
      4         /// <param name="dt"></param>
      5         /// <returns></returns>
      6         private bool Checkdt(DataTable dt)
      7         {
      8             if (dt == null)
      9             {
     10                 MessageBox.Show("参数Datatable未实例化");
     11                 return false;
     12             }
     13             else
     14                 return true;
     15         }
     16         /// <summary>
     17         /// 验证传入筛选列是否属于欲筛选Datatable
     18         /// </summary>
     19         /// <param name="dt"></param>
     20         /// <param name="fieldname"></param>
     21         /// <returns></returns>
     22         private bool Checkfieldname(DataTable dt,string[] fieldname)
     23         {
     24             int flag=0;
     25             for (int i = 0; i < fieldname.Length; i++)
     26             {
     27                 string  strfieldname = fieldname[i];
     28                 for (int j= 0; j < dt.Columns.Count; j++)
     29                 {
     30                     string colname = dt.Columns[j].ColumnName;
     31                     if (strfieldname == colname)
     32                         flag++;
     33                 }
     34             }
     35             if (flag == fieldname.Length)
     36             {
     37                 return true;
     38             }
     39             else
     40             {
     41                 MessageBox.Show("存在不属于参数Datatable的列");
     42                 return false;
     43             }
     44         }
     45         /// <summary>
     46         /// fieldname的传入顺序会影响结果
     47         /// 如果dt有主键可以传入主键用来筛选
     48         /// 出dt中不同记录
     49         /// </summary>
     50         /// <param name="dt"></param>
     51         /// <param name="fieldname"></param>
     52         /// <returns></returns>
     53         private DataTable dtfiter(DataTable dt,string[] fieldname)
     54         {
     55             if (Checkdt(dt) && Checkfieldname(dt,fieldname))
     56             {
     57                 for (int k = 0; k < fieldname.Length; k++)
     58                 {
     59                     for (int i = 0; i < dt.Rows.Count; i++)
     60                     {
     61                         string dti = dt.Rows[i][fieldname[k]].ToString();
     62                         for (int j = 0; j < dt.Rows.Count; j++)
     63                         {
     64                             string dtj = dt.Rows[j][fieldname[k]].ToString();
     65                             if (dti == dtj)
     66                                 if (i != j && dti != string.Empty)
     67                                 {
     68                                     dt.Rows.Remove(dt.Rows[j]);
     69                                 }
     70                         }
     71                     }
     72                 }
     73             }
     74             return dt;
     75         }
     76         private DataTable DifDatatable(DataTable dt)
     77         {
     78             List<int> samerow=new List<int>();
     79             int flag = 0;
     80             List<DataRow> listdr = new List<DataRow>();
     81             for (int i = 0; i < dt.Rows.Count; i++)
     82             {
     83                 DataRow dr = dt.Rows[i];
     84                 for (int j = i+1; j < dt.Rows.Count; j++)
     85                 {
     86                     DataRow secdr = dt.Rows[j];
     87                     for (int k = 0; k < dt.Columns.Count; k++)
     88                     {
     89                         if (dr[k].ToString() == secdr[k].ToString())
     90                             flag++;
     91                         if (flag == dt.Columns.Count)
     92                             samerow.Add(j);
     93                     }
     94                     flag = 0;
     95                 }
     96             }
     97             IEnumerable<int> sameindex = samerow.Distinct();
     98             foreach (var item in sameindex)
     99             {
    100                 listdr.Add(dt.Rows[item]);//记录dt中重复行
    101             }
    102             foreach (var item in listdr)
    103             {
    104                 dt.Rows.Remove(item);//移除dt中重复行
    105             }
    106             return dt;
    107         }
  • 相关阅读:
    GIT分支的一些开发心得
    java文件压缩和解压
    java发送邮件
    单例多例
    String,StringBuffer,StringBuilder区别
    GIT文件的三种状态
    javascript 常用技巧
    javascript优化工具 Doloto
    thinkphp 5内置验证规则-基本版
    php+redis配置
  • 原文地址:https://www.cnblogs.com/yuerdongni/p/2888289.html
Copyright © 2011-2022 走看看