2017-02-16 10 views
-1

У меня есть два DataTables сказать d1 и d2, столбцы которой говорят A, B, C, D.Слияние двух DataTables, которые имеют одни и те же столбцы, но один и имеют некоторые нулевые клетки

Я сохранение данных в d1 и только ячейки, соответствующие столбцу A, B, заполняются аналогично d2, заполняются только ячейки, соответствующие C, D. Я хочу создать единый datatable, который будет иметь данные как d1, так и d2. Он будет иметь данные, соответствующие столбцу A, B, из d1 и столбца C, D из d2. Я заполняю данные как в d1, так и d2 из разных моделей, поэтому они сортируются отдельно.

Мой подход:

я принес один из DataTable говорят d1 к моей цели сохранения источника, теперь я просто положить значения, соответствующие колонки C, D от d2 в моей цели сохранения источника, но это не работает.

Код:

DataTable employeeDataTable; 
DataTable personalDataTable; 
DataTable educationDataTable; 

public DataTable GetPersonalDetails(DataTable dataTable1) 
{ 
    personalDataTable = dataTable1;  
} 

public void EducationDetails(DataTable dataTable) 
{ 
    educationDataTable = dataTable; 
    employeeDataTable = personalDataTable.Copy(); 
    employeeDataTable.Rows[0]["Graduation"] = educationDataTable.Rows[0]["Graduation"]; 
    employeeDataTable.Rows[0]["PostGraduation"] = educationDataTable.Rows[0]["PostGraduation"]; 

    returm employeeDataTable; 
} 
+0

Как узнать, какие значения C и D из d2 соответствуют значениям A и B некоторой строки в d1? –

+0

«Выпуск»/«PostGraduation» - это колонка C, D. Я новичок в datatables, поэтому обращаюсь за помощью. – Yagnesh

+0

Я тебя не понимаю. Какова связь между A, B и C, D? –

ответ

0

В примере вы устанавливаете только значения по строке [0]. Возможно, вы делаете это только как тест, но для выполнения всех строк вам нужно зацикливать с индексом i вместо нуля и цикл для каждой строки таблицы данных.

int numRows = employeeDataTable.Rows.Count; 

for(int i = 0; i < numRows; ++i) 
{ 
    employeeDataTable.Rows[i]["Graduation"] = educationDataTable.Rows[i]["Graduation"]; 
    employeeDataTable.Rows[i]["PostGraduation"] = educationDataTable.Rows[i]["PostGraduation"];  
}