private static 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
}
private void AddCombox2()
{
DataTable dt = new DataTable(StuDS.sldrpurplan.TableName);
dt.Columns.Add("MateSpec", StuDS.sldrpurplan.Columns["MateSpec"].DataType);
object LastValue = null;
foreach (DataRow dr in StuDS.sldrpurplan.Select("", "MateSpec"))
{
if (LastValue == null || !(ColumnEqual(LastValue, dr["MateSpec"])))
{
LastValue = dr["MateSpec"];
dt.Rows.Add(new object[] { LastValue });
}
}
foreach(DataRow dr in dt.Rows)
{
comboBox2.Items.Add(dr["MateSpec"].ToString());
}
}
==========================================
//原码
这里有一个取distinct数据的方法.
static DataTable SelectDistinct(string ReturnTableName, DataTable SourceTable, string ReturnFieldName, string AdditionalFilterExpression)
{
DataTable dt = new DataTable(ReturnTableName);
dt.Columns.Add(ReturnFieldName, SourceTable.Columns[ReturnFieldName].DataType);
object LastValue = null;
foreach (DataRow dr in SourceTable.Select("", ReturnFieldName))
{
if (LastValue == null || !(ColumnEqual(LastValue, dr[ReturnFieldName])))
{
LastValue = dr[ReturnFieldName];
dt.Rows.Add(new object[] { LastValue });
}
}
if (ds != null)
ds.Tables.Add(dt);
return dt;
}
static 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
}