`
sjk2013
  • 浏览: 2182361 次
文章分类
社区版块
存档分类
最新评论

获取对固定列不重复的新DataTable

 
阅读更多

#region 获取对固定列不重复的新DataTable

        /// <summary>
        /// 获取对固定列不重复的新DataTable
        /// </summary>
        /// <param name="dt">含有重复数据的DataTable</param>
        /// <param name="colName">需要验证重复的列名</param>
        /// <returns>新的DataTable,colName列不重复,表格式保持不变</returns>
        private DataTable GetDistinctTable(DataTable dt, string colName)
        {
            if (dt.Rows.Count == 0 || dt.Rows.Count == 1)
            {
                WriteFile("GetDistinctTable传入dt的行数小于等于1" + "\r\n", logName, out outMessage);
                return dt;
            }
            DataView dv = dt.DefaultView;
            //dv过滤dv中的重复列名
            DataTable dtCardNo = dv.ToTable(true, colName);
            DataTable Pointdt = new DataTable();
            //ToTable()根据现有 DataView 中的行,创建并返回一个新的 DataTable。
            //输出表与输入表包含相同的列
            Pointdt = dv.ToTable();
            Pointdt.Clear();
            for (int i = 0; i < dtCardNo.Rows.Count; i++)
            {
                try
                {
                    //dr取的是Select返回的DataRow[]中的第一条数据
                    //如果dtCardNo.Rows[i][0].ToString()中没有值会报数组超出索引界限的错误
                    if (!string.IsNullOrEmpty(dtCardNo.Rows[i][0].ToString()))
                    {
                       DataRow dr = dt.Select(colName + "='" + dtCardNo.Rows[i][0].ToString() + "'")[0];
                        //DataRow.ItemArray通过一个数组来获取或设置此行的所有值
                        Pointdt.Rows.Add(dr.ItemArray);
                    }
                }
                catch (Exception ee)
                {
                   //可以将错误写入日志文件
                }
            }
            return Pointdt;
        }
        #endregion


<wbr></wbr>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics