У меня есть 2 таблицы данных из 2 разных sql (мс SQL и MySQL) с одним аналогичным столбцом данных.
DataTable 1: employeeeno, device, devicestatus
DataTable 2: employeeeno, name, employeeestatus
Мне, вероятно, нужно запустить foreach с несколькими IF в Datatable 1 снова в Datatable2 и поместить результат в Datatable3 следующим образом:
DataTable ResultDataTable = new DataTable("ResultDataTable");
foreach (DataRow dr in myPHPdt.Rows)
{
string checkEmpNo = dr.Table.Rows;
myPHPdt.Select(checkEmpNo);
if (/*Some Condition here*/ )
{
if (/*Some Condition here*/ )
{
if (checkEmpNo = '999999')
{
LMTF.LogMessageToFile("This is skipped");
}
ResultDataTable.Rows.Add(dr.ItemArray);
DefaultCellStyle.BackColor = Color.Red;
}
ResultDataTable.Rows.Add(dr.ItemArray);
}
}
dataGridView3.DataSource = ResultDataTable;
Проблема у меня есть, как я проверяю каждую строку employeeeno с несколькими IF в DataTable1 для сравнения с DataTable2?
Также что-то не так с частью "string checkEmpNo = dr.Table.Rows", поскольку предполагается, что она возвращает имя сотрудника строки, в которой оно находится в данный момент.
Требование:
Если Employeeno в DataTable1 существует в DataTable2 - Добавить в строки DataTable3.
Если состояние Employee Employeeo прекращено - Добавьте в DataTable3 строки с красным цветом строки.
Если сотрудники в DataTable1 равны 999999, ничего не делать.
Возможно ли это вообще сделать без h Метод сравнения DataTable?
Есть ли лучший способ сделать это?
Изменить 1 - 12/3/2020
Я пробовал это - но он не дал никакого результата, хотя и показал имена столбцов. (кажется, что DataRows пусты)
DataTable targetTable = new DataTable();
var dt2Columns = myPHPdt.Columns.OfType<DataColumn>().Select(dc => new DataColumn(dc.ColumnName, dc.DataType, dc.Expression, dc.ColumnMapping));
var dt2FinalColumns = from dc in dt2Columns.AsEnumerable()
where targetTable.Columns.Contains(dc.ColumnName) == false
select dc;
targetTable.Columns.AddRange(dt2FinalColumns.ToArray());
var rowData = from row1 in myPHPdt.AsEnumerable()
join row2 in orisoftdt.AsEnumerable()
on row1["employeeno"] equals row2["EMPLOYEE_ID"]
select row1.ItemArray.Concat(row2.ItemArray.Where(r2 => row1.ItemArray.Contains(r2) == false)).ToArray();
foreach (object[] values in rowData)
targetTable.Rows.Add(values);
dataGridView3.DataSource = targetTable;