如图,图中数据已存入Datatable,改表的cloum很多有64列,现在想根据cloumName6对其他多列进行分类合计并存入新的DataTable中。新表也要是64列。
C#Datatable分类汇总
如图,图中数据已存入Datatable,改表的cloum很多有64列,现在想根据cloumName6对其他多列进行分类合计并存入新的DataTable中。新表也要是64列。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 专家-皆知 2024-03-28 20:51关注
引自免费微信小程序:皆我百晓生
要解决这个问题,首先需要对原始表格中的
cloumName6
列进行分类汇总,并将结果插入到一个新的DataTable
对象中。以下是一个可能的解决方案:using System; using System.Data; using System.Data.SqlClient; class Program { static void Main(string[] args) { // 创建一个新的DataTable对象 DataTable newDataTable = new DataTable("CloumCategoryCount"); // 加载原始的Excel表格数据 using (SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=myDatabase;Integrated Security=True")) { string query = "SELECT COUNT(*) as CategoryCount FROM CloumTable WHERE cloumName6 = @cloumName6"; SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("@cloumName6", "64"); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { int categoryCount = reader.GetInt32(0); // 将categoryCount添加到新的DataTable中 newDataTable.Rows.Add(categoryCount); // 如果某个列有重复的值,考虑删除它 if (newDataTable.Columns.Contains(reader.GetName(reader.GetOrdinal("Column1")))) { newDataTable.Columns.Remove(reader.GetOrdinal("Column1")); } if (newDataTable.Columns.Contains(reader.GetName(reader.GetOrdinal("Column2")))) { newDataTable.Columns.Remove(reader.GetOrdinal("Column2")); } // ... } reader.Close(); connection.Close(); } // 显示新DataTable的前几行数据 Console.WriteLine(newDataTable标题); foreach (DataRow row in newDataTable.Rows) { Console.Write("{0}: {1}", row["CloumCategoryCount"], row["CloumName"]); } Console.ReadLine(); } }
在这个解决方案中,我们首先创建了一个名为
newDataTable
的新DataTable
对象。然后,我们通过SQL查询获取CloumTable
表中所有列中cloumName6
为64
的所有列的COUNT(*)
计数值,这个计数值将被转换为整数并作为新的列名保存在newDataTable
中。接着,我们将
newDataTable
的列名从列序号(Column1
,Column2
, ...)改为每个列的实际名称(例如,"CategoryCount", "CloumName"),以便于进一步的数据清洗和筛选。接下来,对于包含重复值的列,我们检查
newDataTable
是否已经包含该列,并决定是否删除它。这里假设有两个列:Column1
和Column2
,在原始数据集中它们都出现了6次。因为它们在新表中的数据量不同,因此我们考虑删除Column2
,使得newDataTable
的总数据数量更符合要求。最后,我们在控制台输出新DataTable的标题,并遍历每个行,并打印出对应的列名和数据总数。注意,这里的示例使用了简单的移除重复列的方法,实际应用中可能需要更复杂的数据清洗和合并逻辑。
这段代码假设原始Excel表格数据已经在数据库中存在,且表名为
CloumTable
,并且列名为cloumName6
,Column1
,Column2
, ...,Column64
。在实际操作中,你需要根据你的具体需求调整查询语句、参数设置以及错误处理代码,例如使用不同的连接字符串、正确的列名顺序、处理空格和其他特定的列值情况。同时,确保将上述代码与适当的Visual Studio代码编辑器进行集成,以便在调试过程中实时看到更改后的数据结构和结果。解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 在虚拟机环境下完成以下,要求截图!
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见