获取对固定列不重复的新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  




linqs实现

http://blog.csdn.net/jiankunking/article/details/42749663

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用DataTable的DefaultView.ToTable()方法来获取一个DataTable,该DataTable的某包含唯一值。具体来说,您可以按照以下步骤操作: 1. 声明一个DataTable,用于存储唯一值。 2. 使用DataTable的DefaultView.ToTable()方法获取一个DataTable,该DataTable包含与原始DataTable相同的数据,但是具有唯一值。 3. 使用DataTable的Columns属性获取所有的集合。 4. 使用DataTable的Columns.IndexOf()方法获取指定的索引。 5. 使用DataTable的Rows属性获取所有行的集合。 6. 对于每一行,使用DataTable的Rows.IndexOf()方法获取行的索引,并使用DataTable的DefaultView.ToTable()方法获取一个包含该行的DataTable。 7. 使用DataTable的Rows属性获取第一行,并使用该行的指定的值作为唯一值。 下面是一个示例代码: ``` Dim dt As New DataTable() ' 添加数据... Dim uniqueValues As New DataTable() uniqueValues.Columns.Add("ColumnName") Dim newDt As DataTable = dt.DefaultView.ToTable(True, "ColumnName") Dim colIndex As Integer = newDt.Columns.IndexOf("ColumnName") For Each row As DataRow In newDt.Rows Dim rowIndex As Integer = newDt.Rows.IndexOf(row) Dim rowDt As DataTable = newDt.DefaultView.ToTable(True) Dim uniqueValue As Object = rowDt.Rows(0)(colIndex) uniqueValues.Rows.Add(uniqueValue) Next ``` 请注意,上述代码假定您已经向DataTable添加了数据。您需要将“ColumnName”替换为您要获取唯一值的的名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值