Я хочу получить столбец и все его данные строки из объекта 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++;
}
}
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. Вы также можете сделать это за один цикл.
Хотя принятый ответ был полностью правильным, и я кое-что из него узнал, оказалось, что метод DataTable.ImportRow - это именно то, что я хочу для своих нужд, так что просто для справки в будущем для всех, кто может наткнуться на это.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.