Я хочу получить столбец и все его данные строки из объекта DataTable, а затем создать новый столбец в другой таблице данных и добавить его с новым столбцом и его строками. Проблема, с которой я все время сталкиваюсь, заключается в том, что данные строки будут отображаться, как и имена столбцов, но все строки добавляются к одному столбцу, я уверен, что мне не хватает чего-то очевидного, на самом деле я знаю, что это так! Любая помощь приветствуется.

    void GetColumns()
    {
        // add the columns to the new datatable
        foreach (int i in mapValues)
        {
            SplitData.Columns.Add(i.ToString());
        }
        // map values contains the index numbers of my target columns
        foreach (int x in mapValues)
        {

            foreach (DataRow row in OrigData.Rows)
            {
                SplitData.Rows.Add(row[mapValues[LocalIndex]]);
            }

            LocalIndex++;
        }
    }
0
Matt 12 Фев 2010 в 13:23
Пожалуйста, опубликуйте (набросок) свой код.
 – 
Henk Holterman
12 Фев 2010 в 13:25
Вот где проблема, я знаю, что мне нужно как-то перебирать столбцы вместе со строками, хотя я не видел четкого способа сделать это ...
 – 
Matt
12 Фев 2010 в 13:45

2 ответа

Лучший ответ

Перегрузка DataRow.Add, которую вы используете, является перегрузкой params, поэтому вы просто помещаете свои данные столбца orig в первый столбец новой таблицы DataTable.

Вероятно, вам нужно что-то вроде:

DataRow newRow = SplitData.NewRow(); // gets a new blank row with the right schema
newRow[x.ToString()] = row[mapValues[LocalIndex]; // sets the column (that you created before) to the orig data
SplitData.Rows.Add(newRow);

В качестве основы вашего второго цикла for. Вы также можете сделать это за один цикл.

1
David 12 Фев 2010 в 14:34
Привет, дружище, я знал, что это что-то простое
 – 
Matt
12 Фев 2010 в 14:40

Хотя принятый ответ был полностью правильным, и я кое-что из него узнал, оказалось, что метод DataTable.ImportRow - это именно то, что я хочу для своих нужд, так что просто для справки в будущем для всех, кто может наткнуться на это.

0
Matt 12 Фев 2010 в 16:45