C# datatable竖行转换的问题
这次在做项目中,遇到了这样一个问题:datable中列头的名字是不确定的,从数据库中动态查出来的,假设为typeDATA,行的数据中又包含了列头的信息,并按固定的字段分组,当查处行的数据之后用来填充每列的值,用来统计对应的列的信息,如下:
//查处获取列的表头的数据
public DataTable typeDATA
{
get {
StringBuilder typeString = new StringBuilder(@"SELECT [ID] ,[Name] FROM a");
string Typequery = string.Format(typeString.ToString());
return DbHelperSQL.Query(Typequery).Tables[0];
}
}
//行的table数据并进行列的数据填充和转换
DataTable dt = new DataTable();
StringBuilder cnnString = new StringBuilder(@"select No,
Name '类型',COUNT(No ) as '个数' from b inner join PersonPlan on viewHandAll .LineId=PersonPlan .ID
group by No,Name");
StringBuilder sbWhere = new StringBuilder();
string query = string.Format(cnnString.ToString(), 1, (this.PageIndex - 1) * this.Rows + 1, this.PageIndex * this.Rows);
var data = DbHelperSQL.Query(query).Tables[0]; DataColumn dc = null;
//添加表头数据
foreach (DataRow item in typeData.Rows)
{
dt.Columns.Add(item["Name"].ToString(), Type.GetType("System.String"));
}
//k用来和前一行进行比较,看是否与下一行的数据相同,但对应的列的值是不同的,若是同一种数据但不同的列值,则只做添加一行数据处理,不能添加多行,但行的数据要填充到不同的列中
int k = -1;
for (int i=0;i<data.Rows.Count;i++)
{
DataRow row = dt.NewRow();
for (int j = 0; j < typeData.Rows.Count; j++)
{
if (data.Rows[i]["类型"].ToString() == typeData.Rows[j]["Name"].ToString())
{
row[typeData.Rows[j]["Name"].ToString()] = data.Rows[i]["个数"].ToString();
}
}
k++;
if (k>0 && data.Rows[k]["No"] == data.Rows[i]["No"]) //set as the same row but different column when current row is the same as second.
{
i++;
continue;
}
dt.Rows.Add(row); }
C# datatable竖行转换的问题的更多相关文章
- LinQ实现DataTable不定行转列 行列转换,有图
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDemo2.aspx.c ...
- 利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model
利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model 使用场景:网站配置项目,为了便于管理,网站有几个Model类来管理配置文件, 比如ConfigWebsiteMo ...
- ALT+TAB切换时小图标的添加 界面透明 屏幕大小 竖行字体 进程信息
一,ALT+TAB切换时小图标的添加 Dlg类中添加变量 protected: HICON m_hIcon; #define IDR_MAINFRAME 128 ICON IDR_MAINFRAME, ...
- 关于datatable linq的转换
关于datatable datarow DataTable paraval = GetParaVal(DateCondition, strUrl, Page, RowPage, iYearMonthN ...
- datatable赋值行
datatable复制行:DataTable dt = ""; //这里是填充DataTable数据(""中为一个为datatable类型的值,赋值给dt)D ...
- PostgreSQL控制台以竖行显示
\x select * from user; 这个和MySQL的有点区别,在查询之前使用\x进行显示的开启 注意:只需要用一次即可,以后的查询都是以竖行进行显示.
- ios 开发之 -- UILabel的text竖行显示
让UILabel的内容竖行显示,我经常用一下两种方式: 第一种:使用换行符 \n label.text = @"请\n竖\n直\n方\n向\n排\n列"; label.number ...
- 删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误,即DeletedRowInaccessibleException
删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误 =========================================================== 采 ...
- jquery datatable 多行(单行)选择(select),行获取/行删除
jquery datatable 多行(单行)选择(select),行获取/行删除 代码展示 // 示例数据源 var dataSet = [ ['Tasman','Internet Explorer ...
随机推荐
- sql复制表结构及复制表数据
一.复制表结构 假设我们有一个数据表Person,有Id,FirstName,LastName,Weight,Height5个列,表结构可以参考这一篇.现在我们想创建一个新表叫People,表结构和P ...
- js鼠标键禁用功能
页面完全禁用右键 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- poj 1182 食物链(高级的带权并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 76486 Accepted: 22742 Description ...
- vue浏览器返回监听
具体步骤如下: 1.挂载完成后,判断浏览器是否支持popstate mounted(){ if (window.history && window.history.pushState) ...
- 学习笔记之AutoLayout
Align:用来添加对齐约束. Pin:添加标准约束,比如相对于其他视图的大小和位置. Reslove Auto Layout Issues:可以让Xcode 自动生成约束,或者基于约束把子视图的边框 ...
- SCRF的简介及防护手段
CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购 ...
- Mysql双机热备--预备知识
1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器 ...
- PostgreSQL日志号LSN和wal日志文件简记
弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍: (一)wal文件命名规则 1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal): t ...
- device-independent bitmap (DIB) 设备无关位图
设备无关位图即独立于设备的位图(DIB)与"Device-Dependent Bitmaps (DDB) 设备相关位图"相比,它不再依赖于具体的设备,从而更适合在不同的计算机之间传 ...
- [置顶]
flume高并发优化——(14)解决空行停止收集数据问题,及offsets变小问题
日志平台运行一段时间,发现日志有部分丢失,通过检查日志,发现有两个问题导致数据丢失,一个是遇到空行后,日志停止收集,还有就是kafka监控offsets时变小,通过分析代码,找到如下方法: 空行问 ...