datatable SelectDistinct Method

来源:互联网 发布:php教程 编辑:程序博客网 时间:2024/05/22 00:35

SelectDistinct Method

This section contains the code for the SelectDistinct method and the private ColumnEqual helper method. 1.Add the following Private method to the class definition. This method is the same as the method that is used in other DataSetHelper articles. It is used to compare field values (including NULL).
private bool ColumnEqual(object A, object B){        // Compares two values to see if they are equal. Also compares DBNULL.Value.        // Note: If your DataTable contains object fields, then you must extend this        // function to handle them in a meaningful way if you intend to group on them.        if ( A == DBNull.Value && B == DBNull.Value ) //  both are DBNull.Value            return true;        if ( A == DBNull.Value || B == DBNull.Value ) //  only one is DBNull.Value            return false;        return ( A.Equals(B) );  // value type standard comparison}
2.Add the following Public method to the class definition. This method copies unique values of the field that you select into a new DataTable. If the field contains NULL values, a record in the destination table will also contain NULL values.
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;}
原创粉丝点击