WPF比较两个数据表以find匹配的值
在这里input代码我有两个数据表中的一个数据表连接到sql server,另一个连接到oracle。
我正在运行查询语句,并完美地发现。
现在我需要写一些比较oracle中的“UNIT_NO”和sql中的“VehicleName”的东西。 是的,他们是相同的号码。
现在Oracle表中引入了6列,SQL引入了4列
一个例子是:
VehicleName,VehicleGroupName,UserDefinedColumn2,UserDefinedColumn3
Unit_No,Unit_ID,Using_Dept,Status,Using_Dept_Desc,
我希望我的代码从Unit_NO和VehicleName中find匹配的数字,并将所有上述信息全部显示在一行中。 我在想LINQ,但我不能让它正确显示
This code combines the columns from both tables but pulls but does not add the any data in the rows any suggest or fixes private void GetSQLOraclelinqData() { var TstarData = GetTrackstarTruckData(); var M5Data = GetM5Data(); DataTable ComTable = new DataTable(); foreach (DataColumn OraColumn in M5Data.Columns) { ComTable.Columns.Add(OraColumn.ColumnName, OraColumn.DataType); } foreach (DataColumn SQLColumn in TstarData.Columns) { if (SQLColumn.ColumnName == "VehicleName") ComTable.Columns.Add(SQLColumn.ColumnName + 2, SQLColumn.DataType); else ComTable.Columns.Add(SQLColumn.ColumnName, SQLColumn.DataType); } var results = TstarData.AsEnumerable().Join(M5Data.AsEnumerable(), a => a.Field<String>("VehicleName"), b => b.Field<String>("Unit_NO"), (a, b) => { DataRow row = ComTable.NewRow(); row.ItemArray = a.ItemArray.Concat(b.ItemArray).ToArray(); ComTable.Rows.Add(row); return row; }); SQLDataTable.ItemsSource = ComTable.DefaultView; }
我会使用两个嵌套for循环。
外部for循环将遍历SQL DataTable中的每一行。
内部循环将遍历Oracle DataTable中的每一行,如果匹配,则会将匹配存储在某处(可能在列表中)。
可选提示
- 假设每个号码牌只出现一次,我们可以优化这个代码,一旦我们得到一个匹配,通过打破内部循环。
- 我们不能依靠以相同顺序返回的行。 因此,我们不能天真地将来自SQL的第1行与来自Oracle的第1行进行比较。
我的代码基于抓取的数据网格尚未填充的列我调用后面的代码填充表中的两个数据表,也是我们的Excel表。 如果有人需要这些信息,我可以帮忙。
我连接到SQL,甲骨文和加载Excel表进行比较数据