日期:2014-05-17  浏览次数:20374 次

对DataTable进行动态的行转列处理
需要分列的项和需要统计的项都是不定的,层次也是不定的

首先获取一个DataTable,然后对DataTable的数据进行处理。

例如:

原结构:姓名  性别  课目  成绩  期中/期末

                               成绩
目标结构1:姓名  性别    期中        期末
                      语  数  英  语  数  英 

                                   成绩
目标结构2:姓名  性别     语        数        英
                      期中 期末 期中 期末 期中 期末

                                       成绩
目标结构3:姓名  性别   期中/期末   语  数  英

...

当然还可能有其他形式的结构,比如有多个统计字段等等,有没有做过的高手指点下
DataTable 行转列

------解决方案--------------------
相对来说比较简单,只能给你参考代码。
/// <summary>
        /// 将DataTable行列转换
        /// </summary>
        /// <param name="src">要转换的DataTable</param>
        /// <param name="columnHead">要作为Column的哪列</param>
        /// <returns></returns>
        public static DataTable Col2Row(DataTable src, int columnHead)
        {
            DataTable result = new DataTable();
            DataColumn myHead = src.Columns[columnHead];
            result.Columns.Add(myHead.ColumnName);
            for (int i = 0; i < src.Rows.Count; i++)
            {
                result.Columns.Add(src.Rows[i][myHead].ToString());
            }
            //
            foreach (DataColumn col in src.Columns)
            {
                if (col == myHead)
        &n