ds.Tables[0].Select("DISTINCT(AgentsName)").Length如何在datatable里实现DISTINCT(AgentsName)功能?有什么好办法没?

解决方案 »

  1.   

    Distinct这个方法不可在DataTable使用。
    并不是每个Sql里常用的方法都可以在DataTable里使用。
    对于你的某些要求,可以通过循环或其它的方式来实现。
      

  2.   

    若要创建 Select的方法参数,请使用与应用于 DataColumn 类的 Expression 用来创建筛选器的属性值相同的规则。
      

  3.   

    我知道Distinct这个函数不是在DataTable使用的。
    我是让容易理解我要实现的功能。难道真的要写个方法去解决?么现成的?
      

  4.   

    在2.0中转换成dataView操作可以实现
      

  5.   

    DataView.ToTable共有四个重载方法:
    DataView.ToTable ()  根据现有 DataView 中的行,创建并返回一个新的 DataTable。 
    由 .NET Compact Framework 支持。 
     
    DataView.ToTable (String)  根据现有 DataView 中的行,创建并返回一个新的 DataTable。 
    由 .NET Compact Framework 支持。 
     
    DataView.ToTable (Boolean, String[])  根据现有 DataView 中的行,创建并返回一个新的 DataTable。 
    由 .NET Compact Framework 支持。 
     
    DataView.ToTable (String, Boolean, String[])  根据现有 DataView 中的行,创建并返回一个新的 DataTable。 
    由 .NET Compact Framework 支持。 
     
    其中Boolean值指示是否返回重复行,在此就可以取消重复行了。 
      

  6.   

    public DataTable ToTable (
    string tableName,
    bool distinct,
    params string[] columnNames
    )
      
    参数
    tableName
    返回的 DataTable 的名称。distinct
    如果为 true,则返回的 DataTable 将包含所有列都具有不同值的行。默认值为 false。columnNames
    一个字符串数组,包含要包括在返回的 DataTable 中的列名的列表。DataTable 包含指定的列,其顺序与这些列在该数组中的顺序相同。返回值
    一个新的 DataTable 实例,其中包含所请求的行和列。 
      

  7.   

    循环删除
    for (int i = 0; i < dt.Rows.Count-1; i++)
            {
                //判断第x列是否重复
                if (dt.Rows[i][x].ToString() == dt.Rows[i + 1][x].ToString())
                {
                    dt.Rows.RemoveAt(i);// or  dt.Rows.RemoveAt(i+1);
                }
            }
      

  8.   

    可以用 datatable去除重复数据 的方法
    详见 http://code.3rbang.com/vbdonet-datatable-repeat/