首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

求datatable中 这种合拢行的方法

2013-10-31 
求datatable中 这种合并行的方法gzABCDa1000b0200c0030 》d0004a0500b0060gzABCDa1500b0260c0030

求datatable中 这种合并行的方法
gzABCD
a1000
b0200
c0030 ==========》
d0004
a0500
b0060


gzABCD
a1500
b0260
c0030
d0004


将gz列中同名的行合并,A B C  D为列,而且是动态的,可能是A B C D E 。。。。等等 合并时,数值可以是相加的

[解决办法]

public static DataTable GetTableMerge(DataTable dt)
        {
            if (dt == null 
[解决办法]
 dt.Rows.Count == 0)
            {
                return dt;
            }
            else
            {
                ArrayList Al = new ArrayList();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    String s = dt.Rows[i][0].ToString();
                    if (!Al.Contains(s))
                    {
                        Al.Add(s);
                    }
                }

                DataTable result = new DataTable();
                result = dt.Clone();
                //初始化新表
                for (int i = 0; i < Al.Count; i++)
                {
                    DataRow drtmp = result.NewRow();
                    drtmp[0] = Al[i];
                    for (int j = 1; j < result.Columns.Count; j++)
                    {
                        drtmp[j] = 0;
                    }
                    result.Rows.Add(drtmp);
                }

//累加
                foreach (DataRow drnew in result.Rows)
                {
                    foreach (DataRow drold in dt.Rows)
                    {
                        if(drnew[0].Equals(drold[0]))
                        {
                            for (int j = 1; j < result.Columns.Count; j++)
                            {


                                drnew[j]  = Convert.ToDouble(drold[j]) +Convert.ToDouble(drnew[j]);
                            }                   
                        }
                    }
                }
                return result;
            }
        }

热点排行