【问题标题】:Combine 2 Datatables with the common rows only仅将 2 个数据表与公共行合并
【发布时间】:2011-07-28 16:51:07
【问题描述】:

我有 2 个数据表:

_wizardStepSelectUnitDataSet.WizardStepSelectUnits_UnitsSelectedInOtherAgreements

_wizardStepSelectUnitDataSet.WizardStepSelectUnits_SelectedUnits

架构相同,我需要知道两个数据表上存在哪些行,

如何在新的数据表中做到这一点?

没有代码: 我只设计了 2 个数据表。它们已经在内存中填充了一些数据。

我需要知道哪些是使用一个 ID 字段的两个数据表之间的公共行。

设计师的代码我不会复制,你会不知所措。

我试过这个: 变量结果 = 从 r 在 _wizardStepSelectUnitDataSet.WizardStepSelectUnits_UnitsSelectedInOtherAgreements.AsEnumerable() 在 _wizardStepSelectUnitDataSet.WizardStepSelectUnits_SelectedUnits.AsEnumerable() 中加入 c 在 r.Field("UnitId") 上等于 c.Field("UnitId") 选择 r;

        DataRow[] dr = result.Select(
            String.Format(CultureInfo.InvariantCulture.DateTimeFormat,"StartDate <= #{0}#", stopDate));

但是我得到了一个编译器错误: 错误 7 无法从用法中推断方法“System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable, System.Func)”的类型参数。尝试明确指定类型参数。 C:\BITProjects\TeamSystem\luival\refm\DEV\AgreementModule\GUI\WorkItems\UC021_HuurovereenkomstWizard_WorkItem.cs 511 28 Ceusters.REFM.AgreementModule.GUI

谢谢

【问题讨论】:

标签: c# .net ado.net


【解决方案1】:

我不太擅长 LINQ,但也许你想试试这种方法?

var result = from r in dt.AsEnumerable()
                     join c in dt2.AsEnumerable()
                     on r.Field<string>("col1") equals c.Field<string>("col1")
                     select r;

然后是两个表中的所有列。

我确信有一种方法可以比较完整的行而不是字段/列。

【讨论】:

  • 代码可以编译,但是如何访问结果行的列,或者如何将结果放入数据表中?
  • "result" 是一组 DataRows,因此您可以“foreach (DataRow row in result)”。或者您也可以使用“var”代替“DataRow”。
  • 哦。我也发现了一些新东西。您可以使用“result.CopyToDataTable()”。
【解决方案2】:

确定表中的 unique_id 字段,然后,

选择 * 从表 1、表 2 WHERE table1.unique_id = table2.unique_id

一旦您对返回的内容感到满意,您就可以基于 select 构建插入语句。

【讨论】:

  • 不,这是错误的。它的 .NET 代码,而不是 Sql Server 代码。我已经在内存中有两个数据表,我需要使用 .net 代码来完成
【解决方案3】:

使用 System.Data.DataTable.Merge() ,请参阅:http://msdn.microsoft.com/en-us/library/fk68ew7b.aspx

编辑:可能不是一个相关的答案,我误读了“两个表上都存在”。是的,您正在寻找的正是其他人推测的交叉点。

【讨论】:

  • .Merge 不这样做,我只需要两个数据表的公共行,Merge Joins ALL Rows
猜你喜欢
  • 2019-11-29
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2017-09-04
  • 2021-12-30
  • 2020-10-09
相关资源
最近更新 更多