【问题标题】:Merge two datatables which have the same columns but one both have some null cells合并两个具有相同列但一个都有一些空单元格的数据表
【发布时间】:2017-02-16 09:18:18
【问题描述】:

我有两个数据表,比如 d1 和 d2,它们的列是 A、B、C、D。

我将数据保存到 d1 中,只有与 A、B 列对应的单元格被类似地填充为 d2,只有与 C、D 列对应的单元格被填充。我想制作一个包含 d1 和 d2 数据的数据表。即它将具有与 d1 中的 A、B 列和 d2 中的 C、D 列相对应的数据。 我正在将来自不同视图模型的数据填充到 d1 和 d2 中,因此它们有点分离。

我的做法:

我将一个数据表(比如 d1)提取到我的目标保存源,现在我只是将 d2 中与列 C、D 对应的值放入我的目标保存源,但它不起作用。

代码:

DataTable employeeDataTable;
DataTable personalDataTable;
DataTable educationDataTable;

public DataTable GetPersonalDetails(DataTable dataTable1)
{
    personalDataTable   = dataTable1;      
}

public void  EducationDetails(DataTable dataTable)
{
    educationDataTable   = dataTable;
    employeeDataTable = personalDataTable.Copy();
    employeeDataTable.Rows[0]["Graduation"] = educationDataTable.Rows[0]["Graduation"];
    employeeDataTable.Rows[0]["PostGraduation"] = educationDataTable.Rows[0]["PostGraduation"];

    return employeeDataTable;
}

【问题讨论】:

  • 如何知道 d2 中的哪些 C 和 D 值对应 d1 中某行的 A 和 B 值?
  • "Graduation" / "PostGraduation" 是 C,D 列。我是数据表的初学者,这就是寻求帮助的原因。
  • 我不懂你。 A、B 和 C、D 之间是什么关系?
  • 没有任何关系,就像 A,B 的单元格值是从其他一些源中获取的,保持 C,D 的值为空,对于 C,D 也是如此。我想合并两个数据表。
  • 我不懂你。 d1 的哪一行对应 d2 的第一行?

标签: c# .net datatable


【解决方案1】:

在示例中,您仅设置 Row[0] 上的值。也许您只是将其作为测试,但要执行所有行,您需要使用索引 i 而不是零进行循环,并对数据表的每一行进行循环。

int numRows = employeeDataTable.Rows.Count;

for(int i = 0; i < numRows; ++i)
{
     employeeDataTable.Rows[i]["Graduation"] = educationDataTable.Rows[i]["Graduation"];
     employeeDataTable.Rows[i]["PostGraduation"] = educationDataTable.Rows[i]["PostGraduation"];     
}

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 2020-06-13
    • 1970-01-01
    • 2021-07-31
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2015-06-06
    相关资源
    最近更新 更多