.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) // 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 } 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); // Create source table 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"); }