无法从“string”转换为“System.Data.DataColumn[]

userpengcl userpengcl 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dsIIS = new DataTable();
DataTable dsSwt = new DataTable();
dsIIS = it.IISMatch();
dsSwt = vt.SwtMatch();

DataTable dsIISSwt = new DataTable();

dsIISSwt = Join(dsIIS, dsSwt,"id","visistorId");


}
----------------------------------------
public DataTable Join(DataTable First, DataTable Second, DataColumn[] FJC, DataColumn[] SJC)
{

//创建一个新的DataTable

DataTable table = new DataTable("Join");


// Use a DataSet to leverage DataRelation

using (DataSet ds = new DataSet())
{

//把DataTable Copy到DataSet中

ds.Tables.AddRange(new DataTable[] { First.Copy(), Second.Copy() });

DataColumn[] parentcolumns = new DataColumn[FJC.Length];

for (int i = 0; i < parentcolumns.Length; i++)
{

parentcolumns[i] = ds.Tables[0].Columns[FJC[i].ColumnName];

}

DataColumn[] childcolumns = new DataColumn[SJC.Length];

for (int i = 0; i < childcolumns.Length; i++)
{

childcolumns[i] = ds.Tables[1].Columns[SJC[i].ColumnName];

}


//创建关联

DataRelation r = new DataRelation(string.Empty, parentcolumns, childcolumns, false);

ds.Relations.Add(r);


//为关联表创建列

for (int i = 0; i < First.Columns.Count; i++)
{

table.Columns.Add(First.Columns[i].ColumnName, First.Columns[i].DataType);

}

for (int i = 0; i < Second.Columns.Count; i++)
{

//看看有没有重复的列,如果有在第二个DataTable的Column的列明后加_Second

if (!table.Columns.Contains(Second.Columns[i].ColumnName))

table.Columns.Add(Second.Columns[i].ColumnName, Second.Columns[i].DataType);

else

table.Columns.Add(Second.Columns[i].ColumnName + "_Second", Second.Columns[i].DataType);

}


table.BeginLoadData();

foreach (DataRow firstrow in ds.Tables[0].Rows)
{

//得到行的数据

DataRow[] childrows = firstrow.GetChildRows(r);

if (childrows != null && childrows.Length > 0)
{

object[] parentarray = firstrow.ItemArray;

foreach (DataRow secondrow in childrows)
{

object[] secondarray = secondrow.ItemArray;

object[] joinarray = new object[parentarray.Length + secondarray.Length];

Array.Copy(parentarray, 0, joinarray, 0, parentarray.Length);

Array.Copy(secondarray, 0, joinarray, parentarray.Length, secondarray.Length);

table.LoadDataRow(joinarray, true);

}

}

}

table.EndLoadData();

}


return table;

}
这是代码,我想要实现的是两个DataTable的联合查询,但是怎么调用啊,我新手,很多不懂!
...全文

相关推荐

BarTender具名数据源实战:从创建到程序化调用的完整流程

本文详细介绍了BarTender具名数据源的创建与程序化调用流程,涵盖基础概念、设计器操作、模板对象绑定及C#调用实战。通过具名数据源,用户可实现数据一致性、维护便捷和编程友好性,显著提升标签打印效率。特别适合需要批量处理和高精度打印的场景。

weixin_34323858

C# ExcelHelper实战:DataTable与NPOI实现Excel导入导出与批量处理

在企业级开发和上位机系统中,Excel与数据表格的交互是高频需求。C#开发者常将DataTable视为内存中的二维表,而Excel则包含工作表、样式、格式等复杂状态,两者间的映射转换正是Excel操作的核心原理。借助NPOI这一免费开源库,无需安装Office即可完成读写,实现DataTable与Excel的无缝转换。掌握单元格类型处理、日期格式、列宽冻结等细节,可有效规避科学计数法、文件损坏等常见问题。围绕ExcelHelper的封装,不仅支持常规导出与读取,还能结合扫码枪输入、剪切板粘贴等场景实现快速数

蝨孨槑黽

C#读取Excel实战:EPPlus使用教程与常见坑

Excel文件处理是业务开发中的常见需求,而C#中读取Excel存在多种技术选型。传统COM组件方式依赖Office环境且易引发进程崩溃,NPOI虽功能全面但API偏底层。EPPlus作为纯托管库,无需安装Office即可操作.xlsx文件,提供接近Excel使用习惯的高层API,并支持公式缓存、合并单元格、样式等复杂特性。借助EPPlus,开发者可以高效地将工作表数据转换为DataTable,为业务逻辑提供规范的数据源。实际工程中,类型转换、空值判断、合并单元格取值、公式缓存等细节常常成为隐性问题,需要系

chuannaoxuan4674

C# NPOI操作Excel实战:从DataTable读写到大数据量导出优化

在C#开发中操作Excel,常需要一种轻量且稳定的方案。NPOI作为纯托管库,无需安装Office,即可完成xls/xlsx格式的读写,并能将DataTable或DataSet直接映射为Excel工作表。借助IWorkbook对象模型和WorkbookFactory,可以实现灵活的Excel导入导出功能。对于大数据量报表导出,SXSSFWorkbook通过流式写入显著降低内存消耗,避免OOM异常。围绕ExcelHelper实践,梳理NPOI的核心用法、类型转换及性能优化策略,为C#项目中的Excel处理提供

周传炽

基于springboot+vue的摄影作品社区(项目源码)

基于springboot+vue的摄影作品社区(项目源码) 系统采用前后端分离的 B/S 架构。后端基于 Spring Boot 2.7.2 与 Java 1.8 构建,以 MyBatis-Plus 完成数据访问、PageHelper 实现分页,用 MySQL 8 存储业务数据;身份认证采用 Sa-Token 轻量级框架并整合 JWT 令牌,配合 Redis 实现图形验证码缓存与会话存储;前端使用 Vue 3 与 Naive UI 构建界面,由 Vite 完成构建,看板统计图表基于 ECharts 渲染。系统面向普通用户与管理员两类角色:用户端提供注册登录、作品上传与归档、多条件检索浏览、作品集管理、分类与标签管理、摄影圈专题、回收站、个人设置与公告查看等功能;管理端提供数据看板、用户管理与公告管理等功能。

加辣椒了吗?
评论 5
收藏 已收藏
分享
返回顶部
userpengcl
.NET社区 62,272 成员 668,968 内容