Подтвердить что ты не робот

Копирование данных из нескольких столбцов в одну таблицу данных

У меня есть сценарий, где я получаю таблицу данных с 65 столбцами и 100 строками. Мне нужно создать еще одну таблицу данных со всеми 100 строками, то же самое, что и исходная таблица данных, но должна иметь только 5 столбцов из 65, присутствующих в исходной таблице. Есть ли способ достичь этого без цикла?

4b9b3361

Ответ 1

Попробуйте метод DataView.ToTable.

Используйте его следующим образом:

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

Ответ 2

DataTable oldTable = new DataTable();
DataTable newTable = oldTable.Copy();
for (int i = 5; i < 65; i++)
{
    newTable.Columns.RemoveAt(i);   
}

Ответ 3

Попробуйте это,

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

Ответ 4

    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);
        }
    }