请教一下,C#从数据库所查询的内容,分别在两个数据库内,已完成查询,查询内容存储到两个不同对应的数据表内,第一个数据表sumdt,带有“批号batchNo,和订单号orderCode”字段,及产品名称等其他信息,另一个数据表comdtK,也有批号与订单号,及其他信息,现在需要将两个表的内容,通过批号与订单号来对应,合并成一个数据表,并通过datagridview显示出来,请问怎么实现,请给一下代码示例;
1条回答 默认 最新
- wanghui0380 2024-08-22 14:54关注
老规矩直接问chatgpt了,一个key你知道,多key建立父子其实一样。嘿嘿特地没问chargpt怎么用linq的left join。你始终不愿意丢dt,给你讲linq算白讲。
/
创建 DataSet DataSet dataSet = new DataSet(); // 创建并填充第一个 DataTable (父表) DataTable dtParent = new DataTable("ParentTable"); dtParent.Columns.Add("batchNo", typeof(string)); dtParent.Columns.Add("orderCode", typeof(string)); dtParent.Columns.Add("otherData", typeof(string)); // 添加一些示例数据到父表 dtParent.Rows.Add("batch1", "order123", "data1"); dtParent.Rows.Add("batch2", "order124", "data2"); // 创建并填充第二个 DataTable (子表) DataTable dtChild = new DataTable("ChildTable"); dtChild.Columns.Add("batchNo", typeof(string)); dtChild.Columns.Add("orderCode", typeof(string)); dtChild.Columns.Add("detailData", typeof(string)); // 添加一些示例数据到子表 dtChild.Rows.Add("batch1", "order123", "detail1"); dtChild.Rows.Add("batch1", "order123", "detail2"); dtChild.Rows.Add("batch2", "order124", "detail3"); // 将 DataTables 添加到 DataSet dataSet.Tables.Add(dtParent); dataSet.Tables.Add(dtChild); // 建立父子关系 DataRelation relation = new DataRelation("ParentChild", new DataColumn[] { dtParent.Columns["batchNo"], dtParent.Columns["orderCode"] }, new DataColumn[] { dtChild.Columns["batchNo"], dtChild.Columns["orderCode"] }); dataSet.Relations.Add(relation); // 现在你可以通过关系遍历父子记录 foreach (DataRow parentRow in dtParent.Rows) { Console.WriteLine($"Parent: {parentRow["batchNo"]}, {parentRow["orderCode"]}"); foreach (DataRow childRow in parentRow.GetChildRows(relation)) { Console.WriteLine($" Child: {childRow["detailData"]}"); } }
算了还是问一下chatgpt把 ,这个是LINQ to DataTable的,但是如果始终不肯完全丢掉dt,后面这种问题还多着呢。
// 创建并填充父表 DataTable dtParent = new DataTable("ParentTable"); dtParent.Columns.Add("batchNo", typeof(string)); dtParent.Columns.Add("orderCode", typeof(string)); dtParent.Columns.Add("otherData", typeof(string)); dtParent.Rows.Add("batch1", "order123", "data1"); dtParent.Rows.Add("batch2", "order124", "data2"); // 创建并填充子表 DataTable dtChild = new DataTable("ChildTable"); dtChild.Columns.Add("batchNo", typeof(string)); dtChild.Columns.Add("orderCode", typeof(string)); dtChild.Columns.Add("detailData", typeof(string)); dtChild.Rows.Add("batch1", "order123", "detail1"); dtChild.Rows.Add("batch1", "order123", "detail2"); dtChild.Rows.Add("batch2", "order124", "detail3"); // 使用LINQ查询建立父子关系并输出结果 var query = from parent in dtParent.AsEnumerable() join child in dtChild.AsEnumerable() on new { BatchNo = parent.Field<string>("batchNo"), OrderCode = parent.Field<string>("orderCode") } equals new { BatchNo = child.Field<string>("batchNo"), OrderCode = child.Field<string>("orderCode") } into childGroup select new { Parent = parent, Children = childGroup }; // 输出结果 foreach (var item in query) { Console.WriteLine($"Parent: {item.Parent.Field<string>("batchNo")}, {item.Parent.Field<string>("orderCode")}, {item.Parent.Field<string>("otherData")}"); foreach (var child in item.Children) { Console.WriteLine($" Child: {child.Field<string>("detailData")}"); } Console.WriteLine(); } }
解决 无用评论 打赏 举报
悬赏问题
- ¥20 公众号如何实现点击超链接后自动发送文字
- ¥15 用php隐藏类名和增加类名
- ¥15 算法设计与分析课程的提问
- ¥15 用MATLAB汇总拟合图
- ¥15 智能除草机器人方案设计
- ¥15 对接wps协作接口实现消息发送
- ¥15 SQLite 出现“Database is locked” 如何解决?
- ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
- ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
- ¥100 无网格伽辽金方法研究裂纹扩展的程序