C# 复制表模式的简洁/优雅方法?

C# 复制表模式的简洁/优雅方法?,c#,.net,sql-server,ado.net,C#,.net,Sql Server,Ado.net,我有一个带有任意模式的表T1。我想用相同的模式创建第二个表T2,然后将一些数据从T1移植到T2。我可以很容易地手动创建具有相同列名和类型的T2,但这不是一个优雅的解决方案 我是ADO.net新手,刚刚发现了SqlDataAdapter类,我可以用它来提取包含DataColumnCollection的DataTable。如果可能的话,我想直接使用这个DataColumnCollection来定义一个新表,有点像这样: DataTable dt = new DataTable("Table2", o

我有一个带有任意模式的表T1。我想用相同的模式创建第二个表T2,然后将一些数据从T1移植到T2。我可以很容易地手动创建具有相同列名和类型的T2,但这不是一个优雅的解决方案

我是ADO.net新手,刚刚发现了SqlDataAdapter类,我可以用它来提取包含DataColumnCollection的DataTable。如果可能的话,我想直接使用这个DataColumnCollection来定义一个新表,有点像这样:

DataTable dt = new DataTable("Table2", originalDataColumnCollection);
sqlDataAdapter.MakeTable(dt);
是否有一个API可以轻松实现这一点?我当前的方法涉及迭代originalDataColumnCollection以构建创建表Table2。。。字符串,然后通过SqlCommand提交

更新:


我只是注意到我无法从originalDataColumnCollection获取SQL类型,但是if会返回一个C类型。也许这种方法根本无法确保相同的列结构?

您可以执行一个空的select命令并将其存储到一个新表中,这样就可以使用与旧表相同的架构创建一个表,并且以后可以使用它执行您想要的操作

select * into new_table from old_table where 1 = 0

执行此sql命令将创建一个空表,其架构与所需的表相同。

选择*从旧表到要添加行的新表import@dotctor我还不想复制行;我需要做一些客户端处理。我正在尝试创建一个新的空表,它具有相同的列名和类型;我不知道你可以用这种方式创建一个表。但是,当我尝试运行时,在关键字“into”附近出现语法错误。我认为应该从1=0的旧\u表中选择*into new\u table。谢谢,睡一会儿吧!: