【问题标题】:SelectGroupByInto is not grouping!SelectGroupByInto 没有分组!
【发布时间】:2011-03-21 23:46:43
【问题描述】:

我正在尝试使用 this implementation of a DataSetHelper 按列对 DataSet 进行分组。

我正在做的是:

DataSet ds_tmp = new DataSet();
DataTable dt_tmp;
ds_tmp.Tables.Add(data_table_UserTime);
dsHelper = new DataSetHelper(ref ds_tmp);
dt_tmp = dsHelper.SelectGroupByInto("UniqueUsers", ds_tmp.Tables[0], "User, sum(Time) TotalTime", "Time>0", "User");

data_table_UserTime 是这样的:

用户------时间

约翰-----0.6

马克-----1.2

保罗------7.1

约翰------52.6

约翰-----0.8

保罗------50.3

最后,dt_tmp 应该是这样的:

用户------时间

约翰------54.0

马克-----1.2

保罗------57.4

但我得到的是:

用户------时间

约翰-----0.6

约翰------52.6

约翰-----0.8

马克-----1.2

保罗------7.1

保罗------50.3

所以它似乎没有做总和(时间)。

会发生什么?

提前致谢。

【问题讨论】:

    标签: c# .net database datatable dataset


    【解决方案1】:

    哇,我从没想过这会是 DataSetHelper 类中的错误。数值似乎有些问题。

    函数ColumnEqual应该改为:

    private 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, you must extend this
         * function to handle them in a meaningful way if you intend to group on them.
        */
        if ((a is DBNull) && (b is DBNull))
            return true;    //both are null
        if ((a is DBNull) || (b is DBNull))
            return false;    //only one is null
        return (a.ToString() == b.ToString());    //value type standard comparison
    }
    

    区别在于a.ToString() == b.ToString(),原来是a==b。

    还是谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-28
      • 2020-04-27
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      相关资源
      最近更新 更多