WPF比较两个数据表以查找匹配值

时间:2015-06-06 19:30:29

标签: sql wpf excel oracle datatables

在这里输入代码我有两个数据表,其中一个数据表连接到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中找到匹配的数字,并在一行中显示所有上述信息。我在想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;
            }

2 个答案:

答案 0 :(得分:0)

我会使用两个嵌套for循环。

外部for循环将遍历SQL DataTable中的每一行。

内部循环将遍历Oracle DataTable中的每一行,如果匹配,它会将匹配存储在某处(可能在列表中)。

可选提示

  • 假设每个牌照只出现一次,我们可以通过在匹配后立即突破内循环来优化此代码。
  • 我们不能依赖以相同顺序返回的行。因此,我们不能天真地将SQL中的第1行与Oracle中的第1行进行比较。

答案 1 :(得分:0)

我的代码基于抓取数据网格中尚未填充的列我在后面的代码上调用了两个数据表来填充表格,并且我们也是excel表格。如果有人需要这些信息我可以提供帮助。

我连接到SQL,Oracle并加载excel表以对数据进行比较