C#将DataTable1数据插入到DataTable2中,请指点!

小堇 2017-11-01 04:27:40
图一:
图二:
实现效果:
图三:


图二中列是根据图一中MC列内容而定,不定列。
各种朋友给点解决意见,谢谢!
...全文
317 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanyinsishengzi 2017-11-02
  • 打赏
  • 举报
回复
效果就这样。
guanyinsishengzi 2017-11-02
  • 打赏
  • 举报
回复
最好在从数据库取得时候处理

代码用linq也很简单

//行转列
DataTable dataTable2 = new DataTable();
dataTable2.Columns.Add("年份");
DataColumn[] dataColumns = dataTable1.AsEnumerable().GroupBy(row => row["MC"]).Select(keyValue => new DataColumn(keyValue.Key.ToString())).ToArray();
dataTable2.Columns.AddRange(dataColumns);



//数据插入
var dates = dataTable1.AsEnumerable().GroupBy(row => row["JHND"]).ToArray();
foreach (var date in dates)
{
DataRow dataRow = dataTable2.NewRow();
dataRow["年份"] = date.Key.ToString();
foreach (DataColumn column in dataColumns.Where(column => column.ColumnName != "年份"))
{
dataRow[column] = dataTable1.AsEnumerable().Where(row =>
row["JHND"].ToString() == date.Key.ToString() &&
row["MC"].ToString() == column.ColumnName)
.Sum(row => Convert.ToDecimal(row["JE"]));
}
dataTable2.Rows.Add(dataRow);
}


本人QQ-554433626 2017-11-01
  • 打赏
  • 举报
回复

DataTable dataTable = CreateTable();
            foreach (DataRow item in dataTable.Rows)
            {
                CreateDataRow(dataTable, item);
            }
       private static void CreateDataRow(DataTable dataTable, DataRow item)
        {
            DataRow dataRow = dataTable.NewRow();
            dataRow["年份"] = item["PurchaseOrderNo"].ToString();
            dataRow["年份"] = item["PurchaseOrderNo"].ToString();
            dataRow["年份"] = item["PurchaseName"].ToString();
            dataTable.Rows.Add(dataRow);
        }
        private static DataTable CreateTable()
        {
            DataTable dataTable = new DataTable("dataTable");
            dataTable.Columns.Add("年份", typeof(string));
            dataTable.Columns.Add("年份", typeof(string));
            dataTable.Columns.Add("年份", typeof(string));
            return dataTable;
        }
本人QQ-554433626 2017-11-01
  • 打赏
  • 举报
回复
table转table可以把

               while (reader.Read())
                {
                    CreateDataRow(dataTable, reader);
                }
换为

            foreach (var item in oldDataTable.Rows)
            {
                
            }
本人QQ-554433626 2017-11-01
  • 打赏
  • 举报
回复

            DataTable dataTable = CreateTable();
                while (reader.Read())
                {
                    CreateDataRow(dataTable, reader);
                }
        private static DataTable CreateTable()
        {
            DataTable dataTable = new DataTable("dataTable");
            dataTable.Columns.Add("年份", typeof(string));
            dataTable.Columns.Add("年份", typeof(string));
            dataTable.Columns.Add("年份", typeof(string));
            return dataTable;
        }
        private static void CreateDataRow(DataTable dataTable, IDataReader reader)
        {
            DataRow dataRow = dataTable.NewRow();
            dataRow["年份"] = reader["PurchaseOrderNo"].ToString();
            dataRow["年份"] = reader["PurchaseOrderNo"].ToString();
            dataRow["年份"] = reader["PurchaseName"].ToString();
            dataTable.Rows.Add(dataRow);
        }
exception92 2017-11-01
  • 打赏
  • 举报
回复
百度 sqlserver 行转列
xdashewan 2017-11-01
  • 打赏
  • 举报
回复
先循环获得列名,再根据列名判断,插入数据行

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧