将整列从一个数据表移动到另一个C#
本文关键字:数据表 一个 移动 另一个 | 更新日期: 2023-09-27 18:21:41
我需要实现两个数据表之间的列移位功能。假设我在数据表1中有列{A,B,C},在数据表2中有列{A}。
如果我想将列{B,C}移动到DataTable2,我该如何做到这一点?两个表中的数据应该相似。
如果DataTable不是一个正确的选择,那么请帮助我如何实现这一点。。
这可以通过列表>嵌套列表来完成吗?尝试了以下代码,但认为合并不是正确的选择。
private void move(DataTable source, DataTable dest, string colname)
{
var result = source.AsEnumerable().Select(row => row.Field<string>(colname));
dest.Columns.Add(colname);
DataTable dt = source.DefaultView.ToTable(false, colname);
dest.Merge(dt);
}
我是初学者,所以请建议是否有其他方法可以根据用户选择来切换列。
以前我做过这个。我不得不手动编写数据表副本的代码。下面的方法将丢失的列从源表复制到目标表。它返回已复制的列名的集合。第二个函数将数据从源列复制到目标列。它将主键列名作为输入,并列出必须复制数据的列名。
public List<string> CopyDistinctColumns(DataTable source, DataTable target)
{
var copiedColumn = new List<string>();
for(var x = 0; x < source.Columns.Count; x++)
{
var column = source.Columns[x];
if(!target.Columns.Contains(column.ColumnName))
{
var newCol = new DataColumn
{
ColumnName = column.ColumnName,
DataType = column.DataType,
Caption = column.Caption,
DefaultValue = column.DefaultValue,
MaxLength = column.MaxLength,
};
copiedColumn.Add(column.ColumnName);
target.Columns.Add(newCol);
}
}
return copiedColumn;
}
public void CopyData(DataTable source, DataTable target, string primaryKeyColumnName, List<string> copiedColumns)
{
for (var i = 0; i < source.Rows.Count; i++)
{
var row = source.Rows[i];
var primaryKeyValue = row[primaryKeyColumnName];
for (var j = 0; j < target.Rows.Count; j++)
{
var trow = target.Rows[j];
if (trow[primaryKeyColumnName].Equals(primaryKeyValue))
{
foreach (var col in copiedColumns)
{
trow[col] = row[col];
}
break;
}
}
}
}
检查数据表是否有复制选项,喜欢DataTable dt=新DataTable()dt.copy或dt.clone