gpt4 book ai didi

C#/LINQ(?) - 加入两个数据表(没有 SQL!)

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:06 25 4
gpt4 key购买 nike

我有两个数据表(在 SQLS 数据库中)有关系(我们称它们为 dtStock 和 dtSpec,其中 dtSpec.ItemTypeID = dtStock.ID)。我正在分别从数据库中提取它们(使用 SqlClient),因此我可以使用 CommandBuilders 更新它们。

我有一个控件想要查看单个数据表 (dtJob)。

我如何加入它们,以便在我使用控件更新 dtJob 时,dtSpec 和 dtStock 也得到更新?我猜这将涉及 LINQ...

这听起来应该是一件非常简单的事情,但我发现的大多数示例似乎都是将数据复制到新表而不是引用原始数据,或者需要大量代码才能完成(例如,重写 CopyToDataTable 方法来处理连接)。也许我的 Google-fu 只是垃圾。

提前致谢

最佳答案

假设 dtJob 的架构 DataTabledtStockdtSpec 架构的总和,您可能想查看 DataTable.Merge方法将更改从 dtJob 传播到其他两个表。

这是一个例子:

dtStock.Merge(dtJob, preserveChanges: false, MissingSchemaAction.Ignore);
dtSpec.Merge(dtJob, preserveChanges: false, MissingSchemaAction.Ignore);

请注意,在此示例中我使用了 named arguments ,仅在 C# 4.0 中可用,以提高方法调用的可读性。

这是一个更完整的例子:

var firstTable = new DataTable();
firstTable.Columns.Add(new DataColumn("FirstTableId", typeof(int)));
firstTable.Columns.Add(new DataColumn("FirstTableName", typeof(string)));
firstTable.Columns.Add(new DataColumn("SecondTableId", typeof(int)));

var secondTable = new DataTable();
secondTable.Columns.Add(new DataColumn("SecondTableId", typeof(int)));
secondTable.Columns.Add(new DataColumn("SecondTableName", typeof(string)));

var joinedTable = new DataTable();
joinedTable.Columns.Add(new DataColumn("FirstTableId", typeof(int)));
joinedTable.Columns.Add(new DataColumn("FirstTableName", typeof(string)));
joinedTable.Columns.Add(new DataColumn("SecondTableId", typeof(int)));
joinedTable.Columns.Add(new DataColumn("SecondTableName", typeof(string)));

joinedTable.Rows.Add(1, "FirstTableRow1", 1, "SecondTableRow1");
joinedTable.Rows.Add(2, "FirstTableRow2", 1, "SecondTableRow1");
joinedTable.Rows.Add(3, "FirstTableRow3", 2, "SecondTableRow2");

firstTable.Merge(joinedTable, false, MissingSchemaAction.Ignore);
secondTable.Merge(joinedTable, false, MissingSchemaAction.Ignore);

相关资源:

关于C#/LINQ(?) - 加入两个数据表(没有 SQL!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5077601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com