如何去掉DataTable中的重复行(新增.net 2.0中最新解决方法---简便)

.net 1.1中的解决方法(转)
1建立一个DataSetHelper类(DataSetHelper.cs)
public class DataSetHelper
{
    public DataSet ds;
    public DataSetHelper(ref DataSet DataSet)
    {
        ds = DataSet;
    }
    public DataSetHelper()
    {
        ds = null;
    }
    private bool ColumnEqual(object A, object B)
    {
        if (A == DBNull.Value && B == DBNull.Value)  //全部为空值
        {
            return true;
        }
        if (A == DBNull.Value || B == DBNull.Value)  //只有一个是空值
        {
            return false;
        }
        return (A.Equals(B));   //值类型的标准比较
    }
    public DataTable SelectDistinct(string TableName, DataTable SourceTable, string FieldName)
    {
        DataTable dt = new DataTable(TableName);
        dt.Columns.Add(FieldName, SourceTable.Columns[FieldName].DataType);
        object LastValue = null;
        foreach (DataRow dr in SourceTable.Select("", FieldName))
        {
            if (LastValue == null || !(ColumnEqual(LastValue, dr[FieldName])))
            {
                LastValue = dr[FieldName];
                dt.Rows.Add(new object[] { LastValue });
            }
        }
        if (ds != null)
        {
            ds.Tables.Add(dt);
        }
        return dt;
    }
}
2 建立一个Web窗体,在page_load中写下面的代码
DataSet ds;
            DataSetHelper dsHelper;
            ds = new DataSet();
            dsHelper = new DataSetHelper(ref ds);
            //创建源表
            DataTable dt = new DataTable("Orders");
            dt.Columns.Add("EmployeeID", Type.GetType("System.String"));
            dt.Columns.Add("OrderID", Type.GetType("System.Int32"));
            dt.Columns.Add("Amount", Type.GetType("System.Decimal"));
            dt.Rows.Add(new object[] { "Sam", 5, 25.00 });
            dt.Rows.Add(new object[] { "Tom", 7, 50.00 });
            dt.Rows.Add(new object[] { "Sue", 9, 11.00 });
            dt.Rows.Add(new Object[] { "Tom", 12, 7.00 });
            dt.Rows.Add(new Object[] { "Sam", 14, 512.00 });
            dt.Rows.Add(new Object[] { "Sue", 15, 17.00 });
            dt.Rows.Add(new Object[] { "Sue", 22, 2.50 });
            dt.Rows.Add(new object[] { "Tom", 24, 3.00 });
            dt.Rows.Add(new object[] { "Tom", 33, 78.75 });
            ds.Tables.Add(dt);
            DataTable td = dsHelper.SelectDistinct("DistinctEmployees", ds.Tables["Orders"], "EmployeeID");
            this.GridView1.DataSource = td;
            this.GridView1.DataBind();

.net 2.0中的解决方法(原创)
public DataTable GetTopSearch()
{
      DataSet dsKeyword 
= dal.GetKeyword();
      DataSet dsTopSearch 
= new DataSet();
      for (int i = 0; i < 4; i++)
     {
            string keyword = dsKeyword.Tables[0].Rows[i]["Name"].ToString();
            string condition = dsKeyword.Tables[0].Rows[i]["SearchCondition"].ToString();
           dsTopSearch.Merge(dal.GetTopSearch(keyword,condition));
    }

   
return dsTopSearch.Tables[0].DefaultView.ToTable(true"ID","Name","Author","Publisher","PublishDate","TypeName","Price","SalePrice","SavePrice","Rebate","ImagePath","ContentIntro");
}

你可能感兴趣的:(职场,Datatable,行,休闲)