C# 仅将少数列的数据复制到另一个数据表

C# 仅将少数列的数据复制到另一个数据表,c#,.net,.net-4.0,ado.net,C#,.net,.net 4.0,Ado.net,我有一个场景,其中我得到一个包含65列和100行的数据表。我需要再创建一个包含所有100行的数据表,即与原始数据表相同,但在原始表中应该只有65列中的5列。有没有办法在不循环的情况下实现这一点?DataTable oldTable=new DataTable(); DataTable oldTable = new DataTable(); DataTable newTable = oldTable.Copy(); for (int i = 5; i < 65; i++) { new

我有一个场景,其中我得到一个包含65列和100行的数据表。我需要再创建一个包含所有100行的数据表,即与原始数据表相同,但在原始表中应该只有65列中的5列。有没有办法在不循环的情况下实现这一点?

DataTable oldTable=new DataTable();
DataTable oldTable = new DataTable();
DataTable newTable = oldTable.Copy();
for (int i = 5; i < 65; i++)
{
    newTable.Columns.RemoveAt(i);   
}
DataTable newTable=oldTable.Copy(); 对于(int i=5;i<65;i++) { newTable.Columns.RemoveAt(i); }
试试这个方法

像这样使用它:

DataTable newTable = oldTable.DefaultView.ToTable(false, "ColumnName1", "ColumnName2", "ColumnName3", "ColumnName4", "ColumnName5"); 
试着这样,

DataTable newTable  = oldTable.Copy();
newTable.Columns.Remove("ColumnName");
您可以在此处删除不需要的列

以下是您问题的最佳解决方案:

DataTable dt = new DataTable();
string [] column = {"Column1", "Column2"};
dt = DTItem.DefaultView.ToTable("dd", false, column);      
//DTItem is the Existing  Table and "dd" is the temporary tablename, u give whatever u want

您希望保留哪些列?前五列、后五列或选定的五列?“我有一些精选的专栏,我是Satyajit。我编辑了我的答案。它将给出你问题的最终答案。你能给你的答案添加一些上下文吗?太棒了!你节省了我的时间:D
    private void button3_Click(object sender, EventArgs e)
    {
        DataTable destiny = new DataTable();
        destiny.Columns.Add("c1");
        destiny.Columns.Add("c2");
        destiny.Columns.Add("c3");
        destiny.Columns.Add("c4");

        CopyColumns(dtST_Split, destiny, "c1", "c2","c3","c4");

    }

    private void CopyColumns(DataTable source, DataTable dest, params string[] columns)
    {
        foreach (DataRow sourcerow in source.Rows)
        {
            DataRow destRow = dest.NewRow();
            foreach (string colname in columns)
            {
                destRow[colname] = sourcerow[colname];
            }
            dest.Rows.Add(destRow);
        }
    }