有办法可以将DataSet数据再进行分组吗?

时间:2022-03-20 15:07:55
现在遇到一个特殊情况,就是在不改SQL的情况下,将用此SQL查出的结果(即此DATASET),再分组(GROUP BY).

请问,有办法可以将DataSet数据再进行分组吗?

我查了一下只有一个DataTable中的Select方法,可是它只能筛选不能分组呀,
后来又想用DataView也没有什么发现@#$@#$@#......

12 个解决方案

#1


好像不行吧,因为你要分组的话,你要对哪项进行集合,这个必需得改sql吧

不行只能循环单个判断,然后计算。

#2


我不知道  还望强人指点

#3


.net交流群(上海站)36840133
.net交流群(广州站)25367091
.net交流群(总站)20962976

#4


单纯分组取数据,当然Select方法就可以了,如果分组计算可以用Compute方法

#5


我记得好像有个Filter的。
但是不记得是DataSet的还是DataGrid的功能了。

#6


DataView

#7


我所知道的DataTable没有类似的分组功能.

#8


对数据分组,如果没有合计的话,你可以考虑用排序来把相似的记录组到一起.
如果分组的同时还要合计,或像Sql语句那样,应该不可以,因为那样记录的条数会发生变化,在DataTable中不可能实现.

#9


DataView.rowFilter

#10


if (ds.Tables[0].Rows.Count != 0)
        {
            DataView dv = ds.Tables[0].DefaultView;
            if (filt != "%")
            {
                dv.RowFilter = "Thing_AddL='" + filt + "'";
            }
            this.dgSearch.DataSource = dv;
            this.dgSearch.DataBind();
         }

#11


基本上不可能了。
你可以用排序,循环来处理类似的功能
比如ds中有个Table.里面有3个字段,name,sex,age

如果你要按age分组.你可以先按age排序.然后做如下出来

string oldAge =dt.rows[0]["age"].toString();
string newAage="";
for(int i=0;i<dt.Row.Count;i++)
{
    newAage=dt.rows[i]["age"].toString();
    if(newAage!=oldAge)
   {
     //处理.
    oldAge=newAage;
   }

   //同一组的操作.
}

#12


哎。。我也有这个情况啊。。
真是没有办法的。。
网上找都找不到解决方案。。汗。。

#1


好像不行吧,因为你要分组的话,你要对哪项进行集合,这个必需得改sql吧

不行只能循环单个判断,然后计算。

#2


我不知道  还望强人指点

#3


.net交流群(上海站)36840133
.net交流群(广州站)25367091
.net交流群(总站)20962976

#4


单纯分组取数据,当然Select方法就可以了,如果分组计算可以用Compute方法

#5


我记得好像有个Filter的。
但是不记得是DataSet的还是DataGrid的功能了。

#6


DataView

#7


我所知道的DataTable没有类似的分组功能.

#8


对数据分组,如果没有合计的话,你可以考虑用排序来把相似的记录组到一起.
如果分组的同时还要合计,或像Sql语句那样,应该不可以,因为那样记录的条数会发生变化,在DataTable中不可能实现.

#9


DataView.rowFilter

#10


if (ds.Tables[0].Rows.Count != 0)
        {
            DataView dv = ds.Tables[0].DefaultView;
            if (filt != "%")
            {
                dv.RowFilter = "Thing_AddL='" + filt + "'";
            }
            this.dgSearch.DataSource = dv;
            this.dgSearch.DataBind();
         }

#11


基本上不可能了。
你可以用排序,循环来处理类似的功能
比如ds中有个Table.里面有3个字段,name,sex,age

如果你要按age分组.你可以先按age排序.然后做如下出来

string oldAge =dt.rows[0]["age"].toString();
string newAage="";
for(int i=0;i<dt.Row.Count;i++)
{
    newAage=dt.rows[i]["age"].toString();
    if(newAage!=oldAge)
   {
     //处理.
    oldAge=newAage;
   }

   //同一组的操作.
}

#12


哎。。我也有这个情况啊。。
真是没有办法的。。
网上找都找不到解决方案。。汗。。