当前位置: 老葡京网站娱乐 > web开发 > ASP.NET > 正文

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

时间:2015-04-23 csdn博客 衣舞晨风
 老葡京网站娱乐 www.sdguanhua.com 
#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

更多精彩内容:http://www.sdguanhua.com/webkf/aspx/