正在从另一个DataTable更新DataTable列
本文关键字:DataTable 更新 另一个 | 更新日期: 2023-09-27 18:00:43
使用。NET 4 C#,我有一个数据集,其中包含两个从导入的csv文件生成的DataTables,它们是从表单注册数据创建的。其中一个包含记录ID和时间戳。另一个是产品注册列表(名称、地址等),以及相应的记录ID(约10000条记录)
如何将第一个数据表中的时间戳插入到与正确记录ID匹配的第二个数据表?我可以将DataAdapter附加到现有数据集并以这种方式对其进行查询吗?我希望我能在第二个数据表中添加一个时间戳列,并从第一个数据表更新它。
我知道这没有意义(为什么在导出表单数据时不包括时间戳?)。我使用Joomla表单模块进行注册,并且导出不包括时间戳。从数据库中,我可以导出匹配的时间戳和记录ID数据,但数据库结构将记录字段拆分为单独的表,我不知道如何将整个记录合并回可用的内容,所以我只能使用两个csv来显示同一记录的数据)。
非常感谢任何朝着正确方向的推动。
当然,您可以自己迭代所有记录并进行匹配。但是,您也可以在数据集中的DataTables之间建立关系,然后在记录数据表中创建一个计算列,提取父列的值。请参见此示例:http://windowsdevcenter.com/dotnet/2003/05/26/datacolumn_expressions.html
请参阅这篇关于如何实际添加关系的文章:http://msdn.microsoft.com/en-us/library/ay82azad%28v=vs.71%29.aspx
朝向底部:
家长。ColumnName父表中的列
因此,在创建关系后,您可以执行以下操作:ds["Table2"].Columns.Add("Timestamp", typeof(DateTime), "Parent.Timestamp")
试试这个:
将新列添加到第二个数据表
DataColumn dc = new DataColumn("DateCol", typeof(System.DateTime));
dt2.Columns.Add(dc);
现在使用第一个数据表更新第二个数据表中的日期列
dt2.AsEnumerable().Join( dt1.AsEnumerable(),
dt2Rows => dt2Rows.ItemArray["record_id"],
dt1Rows => dt1Rows.ItemArray["record_id"],
(dt2Rows, dt1Rows) => new { dt2Rows, dt1Rows })
.ToList()
.ForEach(i => i.dt2Rows.SetField("DateCol", i.dt1Rows.ItemArray["DateCol"]));
要使用上面的linq查询,您必须导入系统。类文件中的Linq命名空间