
如图,图中数据已存入Datatable,改表的cloum很多有64列,现在想根据cloumName6对其他多列进行分类合计并存入新的DataTable中。新表也要是64列。

引自免费微信小程序:皆我百晓生
要解决这个问题,首先需要对原始表格中的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代码编辑器进行集成,以便在调试过程中实时看到更改后的数据结构和结果。