问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#将查询返回的数据(一行多列)怎么转换成一列多行dataTable?

发布网友 发布时间:2022-04-27 12:33

我来回答

3个回答

懂视网 时间:2022-04-27 16:54

代码如下:
 /// <summary>
  /// DataTable行转列
  /// </summary>
  /// <param name="dtable">需要转换的表</param>
  /// <param name="head">转换表表头对应旧表字段(小写)</param>
  /// <returns></returns>
  public static DataTable DataTableRowtoCon(DataTable dtable, string head)
  {
   DataTable dt = new DataTable();
   dt.Columns.Add("NumberID");
   for (int i = 0; i < dtable.Rows.Count; i++)
   {//设置表头
    dt.Columns.Add(dtable.Rows[i][head].ToString());
   }
   for (int k = 0; k < dtable.Columns.Count; k++)
   {
    string temcol = dtable.Columns[k].ToString();
    if (dtable.Columns[k].ToString().ToLower() != head)//过滤掉设置表头的列
    {
     DataRow new_dr = dt.NewRow();
     new_dr[0] = dtable.Columns[k].ToString();
     for (int j = 0; j < dtable.Rows.Count; j++)
     {
      string temp = dtable.Rows[j][k].ToString();
      new_dr[j + 1] = (Object)temp;
     }
     dt.Rows.Add(new_dr);
    }
   }
   return dt;
  }

热心网友 时间:2022-04-27 14:02

DataTable实现行列转换的方法,具体实现方法如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable tt = GetCrossTable(CreateDT());
GridView1.DataSource = tt;
GridView1.DataBind();
}
}
//创建DataTable
protected DataTable CreateDT()
{
DataTable tblDatas = new DataTable("Datas");
//数据列
tblDatas.Columns.Add("姓名", Type.GetType("System.String"));
tblDatas.Columns.Add("科目", Type.GetType("System.String"));
tblDatas.Columns.Add("分数", Type.GetType("System.Int32"));
tblDatas.Rows.Add(new object[] { "张三", "语文", 89 });
tblDatas.Rows.Add(new object[] { "张三", "数学", 90 });
tblDatas.Rows.Add(new object[] { "张三", "英语", 79 });
tblDatas.Rows.Add(new object[] { "张三", "地理", 70 });
tblDatas.Rows.Add(new object[] { "张三", "生物", 95 });
tblDatas.Rows.Add(new object[] { "李四", "语文", 87 });
tblDatas.Rows.Add(new object[] { "李四", "英语", 86 });
tblDatas.Rows.Add(new object[] { "李四", "地理", 82 });
tblDatas.Rows.Add(new object[] { "王五", "语文", 81 });
tblDatas.Rows.Add(new object[] { "王五", "数学", 70 });
tblDatas.Rows.Add(new object[] { "王五", "英语", 88 });
tblDatas.Rows.Add(new object[] { "王五", "生物", 96 });
return tblDatas;
}
/// <summary>
/// 将DataTable的第二列的值转化为列
//(即将原来的行表,转化成交叉表,没有对应值则默认"0")
/// </summary>
/// <param name="dt">必须三列,第三列为值</param>
/// <returns></returns>
public static DataTable GetCrossTable(DataTable dt)
{
if (dt == null || dt.Columns.Count != 3 || dt.Rows.Count == 0)
{
return dt;
}
else
{
DataTable result = new DataTable();
result.Columns.Add(dt.Columns[0].ColumnName);
DataTable dtColumns = dt.DefaultView.ToTable("dtColumns", true, dt.Columns[1].ColumnName);
for (int i = 0; i < dtColumns.Rows.Count; i++)
{
string colName;
if (dtColumns.Rows[1][0] is DateTime)
{
colName = Convert.ToDateTime(dtColumns.Rows[i][0]).ToString();
}
else
{
colName = dtColumns.Rows[i][0].ToString();
}
result.Columns.Add(colName);
result.Columns[i + 1].DefaultValue = "0";
}
DataRow drNew = result.NewRow();
drNew[0] = dt.Rows[0][0];
string rowName = drNew[0].ToString();
foreach (DataRow dr in dt.Rows)
{
string colName = dr[1].ToString();
double dValue = Convert.ToDouble(dr[2]);
if (dr[0].ToString().Equals(rowName, StringComparison.CurrentCultureIgnoreCase))
{
drNew[colName] = dValue.ToString();
}
else
{
result.Rows.Add(drNew);
drNew = result.NewRow();
drNew[0] = dr[0];
rowName = drNew[0].ToString();
drNew[colName] = dValue.ToString();
}
}
result.Rows.Add(drNew);
return result;
}
}

热心网友 时间:2022-04-27 15:20

你用什么对象查询的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
鞋底是空心格子怎么办 鞋里有格子硌脚怎么办 买的鞋子里面是空心格子底硌脚怎么办 鞋子底是空心格子的怎样办 浅谈NY5196—2002有机茶 有机食品茶叶标准 茶叶的储藏运销:茶叶贮藏期的化学变化 东方美人茶要怎么储存?东方美人茶储存方法 乌龙茶贮运方法 有机乌龙茶是什么贮藏与运输的? 血小板高,有那些食对降血小板有效? 老鼠煲黑豆什么功效? QQ游戏大厅中的连连看 qq游戏 连连看 QQ游戏大厅里多层连连看怎么玩 qq游戏里的连连看在哪?? QQ游戏”连连看”怎么玩呀? datatable行数据怎么转化成列数据 星球引力大小与物体运动速度的关系 一个星球引力的大小,除了和质量有关,是不是还和它的 - 信息提示 行星的引力大小与什么有关? 谁做恒星是不是决定于星球的引力?那引力的大小由什么决定? 一个星球的质量大小能决定本身的引力大小吗? 星球的大小和它的引力是成正比吗 在太阳系,哪个星球的引力最大?哪个最小呢? 任何一颗星球,它的质量和密度越高,就意味着引力越大吗?? 两全险和终身寿险有什么区别 为什么手机平时网速很好打游戏的时候却变得很慢? 招商银行信用卡注销后怎样才知道有没有注销成功 GBA三国志英杰传各兵种最终策略是什么 求助,续三国志英杰传骠骑兵厉害 云班课倍速会被发现吗 超级终端里看到数据 但是键盘操作不了 是什么原因 linux环境变量改了后进不了root怎么办 求助汉译英 行政管理学中,英文词汇翻译 行政管理学校(中专)英语怎么翻译啊? “行政”的英文单词怎么写?? 行政的英文是什么? 行政管理科学研究会英文翻译?谢谢 行政管理硕士的英文简称是什么? 行政管理学起源于哪个国家 英文翻译:高手请进,谢谢了! “我是2011级行政管理班的学生” 怎么翻译啊???谢谢了 开展学校行政管理 翻译成英文 名词解释:行政管理学 求凤唳天下:倾世帝王宠txt 凤唳天下小说txt全集免费下载 在哪网站可以看凤唳九天 倾世帝王宠 凤唳天下萧文俊对容祈啥感情?