publicclass DataSetHelper ...{ public DataSet ds; public DataSetHelper(ref DataSet DataSet) ...{ ds = DataSet; } public DataSetHelper() ...{ ds =null; } privatebool ColumnEqual(object A, object B) ...{ if (A == DBNull.Value && B == DBNull.Value) // both are DBNull.Value returntrue; if (A == DBNull.Value || B == DBNull.Value) // only one is DBNull.Value returnfalse; return (A.Equals(B)); // value type standard comparison } 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(newobject[] ...{ LastValue }); } } if (ds !=null) ds.Tables.Add(dt); return dt; } }