DataTable行转列
来源:互联网 发布:网络大电影预算 编辑:程序博客网 时间:2024/06/06 01:09
数据库中查询后的结果为:
col1 col2 col3 col4
AAAA AA 扬州 10.50
AAAA AA 北京 150.00
AAAA BB 南京 20.00
BBBB QQ 北京 50.00
BBBB PP 上海 45.00
BBBB PP 南京 100.00
怎么才能转换成下面这种格式:
扬州 南京 北京 上海
AAAA AA 10.50 150.00
AAAA BB 20.00
BBBB QQ 50.00
BBBB PP 100.00 45.00
方法一:
DataTable rs1=GetTable( "Select col1,col2 From TabName Group By Col1,Col2 ");
DataTable rs2=GetTable( "Select distinct Col3 From TabName ");
for(int i=0;i <rs2.Rows.Count;i++)
{
rs1.Columns.Add(rs2.Rows[i].ToString());
}
DataTable rs3=GetTable( "Select col1,col2, col3,col4 From TabName ");
for(int i=0;i <rs3.Rows.Count;i++)
{
for(int j=0;j <rs1.Rows.Count;j++)
{
if(rs1.Rows[j][ "col1 "].ToString()==rs3.Rows[i][ "col1 "].ToString() && rs1.Rows[j][ "col2 "].ToString()==rs3.Rows[i][ "col2 "].ToString())
{
rs1.Rows[j][rs3.Rows[i][ "col3 "].ToString()]=rs3.Rows[i][ "col4 "].ToString();
break;
}
}
}
方法二:
单纯用SQL可能不行
DataTable rs1=GetTable( "Select col1,col2 From TabName Group By Col1,Col2 ");
DataTable rs2=GetTable( "Select distinct Col3 From TabName ");
for(int i=0;i <rs2.Rows.Count;i++)
{
rs1.Columns.Add(rs2.Rows[i].ToString());
}
DataTable rs3=GetTable( "Select col1,col2, col3,col4 From TabName ");
for(int i=0;i <rs3.Rows.Count;i++)
{
for(int j=0;j <rs1.Rows.Count;j++)
{
if(rs1.Rows[j][ "col1 "].ToString()==rs3.Rows[i][ "col1 "].ToString() && rs1.Rows[j][ "col2 "].ToString()==rs3.Rows[i][ "col2 "].ToString())
{
rs1.Rows[j][rs3.Rows[i][ "col3 "].ToString()]=rs3.Rows[i][ "col4 "].ToString();
break;
}
}
}
/// <summary>
/// 执行DataTable中的查询返回新的DataTable
/// </summary>
/// <param name="dt">源数据DataTable</param>
/// <param name="condition">查询条件</param>
/// <returns></returns>
private DataTable GetNewDataTable(DataTable dt,string condition)
{
DataTable newdt = new DataTable();
newdt=dt.Clone();
DataRow[] dr = dt.Select(condition);
for(int i=0;i<dr.Length;i++)
{
newdt.ImportRow((DataRow)dr[i]);
}
return newdt;//返回的查询结果
}
DataRow[] rows = dt.Select(conditions);
foreach(DataRow row in rows)
{
newdt.Rows.Add(row.ItemArray);
}
return newdt;
- DataTable行转列
- DataTable 行转列
- DataTable 行转列
- DataTable 行转列
- Datatable行转列
- DataTable行转列
- Linq 实现 DataTable 行转列
- C# DataTable 行转列
- Linq 实现 DataTable 行转列
- Linq实现DataTable行转列
- C#datatable行转列
- DataTable
- DataTable
- DataTable
- DataTable
- datatable
- DataTable
- DataTable
- System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本
- oci编程,避免报错误ORA-01405: 提取的列值为 NULL
- asp.net state server与nod32冲突
- 读书计划
- org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction
- DataTable行转列
- css自适应宽度
- centos cmake 安装 mysql-5.5.16 附配置文件
- checkboxlist取值
- 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联
- lrs_receive函数超时问题
- 深入浅出之正则表达式
- 如何判断页面加载完成
- oracle apache服务占用80端口