我想将内容从一个数据表复制到另一个数据表,而不复制或克隆数据结构。做这个的最好方式是什么? 我需要这样做,因为我从SQL Server存储过程获得了一个数据表,并且无法修改给定的只读表。所以我需要重新创建它而不复制所有底层结构。 我希望这是有道理的。
问候 阿马里诺(Amarino)
答案 0 :(得分:1)
如果要复制数据表,则有两个选择,第一个是复制或克隆。 第二个选项是使用foreach或for循环进行复制,您可以从dataTable中获取任何列
send
但是在第二种情况下,您应该提前知道将在何处查看哪些数据,您可以获取任何单元格并将其添加到新的DataTable中
这是我的使用代码
int columnsize = dt.Columns.Count;
foreach (DataRow X in dt.Rows)
{
for (int i = 0; i < columnsize; i++)
{
// int bir = Convert.ToInt32(X[i]);
// you can set here your need dataTable
}
}
// then here new dataTable you can assing to any datagridview.DataSource = newDataTable
答案 1 :(得分:1)
我一直想做这样的事情:以下解决方案对我有用。
DataTable lDT2 = someMethod(); //populated with data from SomeMethod()
DataTable lDT3 = new DataTable();
lDT3.Columns.Add("Name", typeof(string));
lDT3.Columns.Add("Name2", typeof(string));
foreach (DataColumn col in lDT2.Columns) {
lDT3.Columns.Add(col.ColumnName, col.DataType);
}
foreach (DataRow dr in lDT2.Rows) {
DataRow lDT3dr = lDT3.NewRow();
for (int i = 0; i < lDT2.Columns.Count; i++) {
if (i == 0) { lDT3dr[i] = "some info"; }
if (i == 1) { lDT3dr[i] = "more info"; }
lDT3dr[i+2] = dr[i];
}
lDT3.Rows.Add(lDT3dr);
}
答案 2 :(得分:0)
如果我理解正确,您想复制数据,但忽略 schema 。为此,您可以从源表中收集数据集,然后遍历每一行并将其插入目标表中。
这是一种将数据从一个表复制到另一个表的简单方法,而无需担心键或约束。您需要确保目标表可以接受数据(它必须是正确的类型,或者必须将其强制转换为可接受的数据)。
答案 3 :(得分:0)
另一个选择是使用DefaultView.ToTable()。这也允许您提取DISTINCT值。如果您想要所有列
var myNewTable = ExistingDataTable.DefaultView().ToTable();
如果您想限制某些条件
var dv = ExistingDataTable.DefaultView();
dv.Filter = "SomeColumn = 'SomeValue'";
var myFilteredTable = dv.ToTable();