.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();ide
.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");
}this