天天看点

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

.net 1.1中的解决方法(转)

1建立一个DataSetHelper类(DataSetHelper.cs)

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

public class DataSetHelper

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

...{

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

    public DataSet ds;

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

    public DataSetHelper(ref DataSet DataSet)

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

    ...{

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

        ds = DataSet;

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

    }

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

    public DataSetHelper()

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

        ds = null;

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

    private bool ColumnEqual(object A, object B)

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

        if (A == DBNull.Value && B == DBNull.Value) //  both are DBNull.Value

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

            return true;

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

        if (A == DBNull.Value || B == DBNull.Value) //  only one is DBNull.Value

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

            return false;

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

        return (A.Equals(B));  // value type standard comparison

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

    public DataTable SelectDistinct(string TableName, DataTable SourceTable, string FieldName)

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

        DataTable dt = new DataTable(TableName);

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

        dt.Columns.Add(FieldName, SourceTable.Columns[FieldName].DataType);

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

        object LastValue = null;

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

        foreach (DataRow dr in SourceTable.Select("", FieldName))

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

        ...{

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

            if (LastValue == null || !(ColumnEqual(LastValue, dr[FieldName])))

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

            ...{

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

                LastValue = dr[FieldName];

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

                dt.Rows.Add(new object[] ...{ LastValue });

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

            }

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

        }

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

        if (ds != null)

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

            ds.Tables.Add(dt);

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

        return dt;

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

}

2 建立一个Web窗体,在page_load中写下面的代码

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

       DataSet ds;

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

        DataSetHelper dsHelper;

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

        ds = new DataSet();

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

        dsHelper = new DataSetHelper(ref ds);

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

        // Create source table

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

        DataTable dt = new DataTable("Orders");

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

        dt.Columns.Add("EmployeeID", Type.GetType("System.String"));

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

        dt.Columns.Add("OrderID", Type.GetType("System.Int32"));

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

        dt.Columns.Add("Amount", Type.GetType("System.Decimal"));

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

        dt.Rows.Add(new object[] ...{ "Sam", 5, 25.00 });

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

        dt.Rows.Add(new object[] ...{ "Tom", 7, 50.00 });

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

        dt.Rows.Add(new object[] ...{ "Sue", 9, 11.00 });

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

        dt.Rows.Add(new Object[] ...{ "Tom", 12, 7.00 });

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

        dt.Rows.Add(new Object[] ...{ "Sam", 14, 512.00 });

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

        dt.Rows.Add(new Object[] ...{ "Sue", 15, 17.00 });

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

        dt.Rows.Add(new Object[] ...{ "Sue", 22, 2.50 });

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

        dt.Rows.Add(new object[] ...{ "Tom", 24, 3.00 });

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

        dt.Rows.Add(new object[] ...{ "Tom", 33, 78.75 });

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

        ds.Tables.Add(dt);

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

       DataTable td=dsHelper.SelectDistinct("DistinctEmployees", ds.Tables["Orders"], "EmployeeID");

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

       this.GridView1.DataSource = td;

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

       this.GridView1.DataBind();

 .net 2.0中的解决方法(原创)

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

public DataTable GetTopSearch()

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

{

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

            DataSet dsKeyword = dal.GetKeyword();

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

            DataSet dsTopSearch = new DataSet();

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

            for (int i = 0; i < 4; i++)

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

                string keyword = dsKeyword.Tables[0].Rows[i]["Name"].ToString();

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

                string condition = dsKeyword.Tables[0].Rows[i]["SearchCondition"].ToString();

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

                dsTopSearch.Merge(dal.GetTopSearch(keyword,condition));

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

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

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

先把DataTable转成DataView,再通过DataView.ToTable()转回DataTable,ToTable()方法中有一个重载可以轻松消除重复行.

注:该重载的第二个参数为要保存的字段名.

继续阅读