取distinct数据的方法

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
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值