数据集中多个表的内部连接

inner join on multiple tables in a DataSet

我有一个包含 2 个数据的数据集 tables.Both 这些表是从 2 个不同的 Oracle 数据库(物理上和逻辑上是分开的)中检索的。

我需要对驻留在 1 个数据集中的这两个表执行内部联接。然后在gridview中显示结果。

是否有可能对数据集中的表进行 SQL 联接?

如果是的话,有没有人有一个成功的例子?如果没有,有人能给我指出正确的方向吗——我不想做任何 "hacks"(手动循环和其他类似的迭代),因为我相信在环境中会有一种方法可以做到,只需要正确的方法。

这是在 VB .net 中,因此希望能提供更相关的代码,但非常感谢任何帮助。

试试这个方法帮手:

private DataTable JoinDataTables(DataTable t1, DataTable t2, params Func<DataRow, DataRow, bool>[] joinOn)
{
    DataTable result = new DataTable();
    foreach (DataColumn col in t1.Columns)
    {
        if (result.Columns[col.ColumnName] == null)
            result.Columns.Add(col.ColumnName, col.DataType);
    }
    foreach (DataColumn col in t2.Columns)
    {
        if (result.Columns[col.ColumnName] == null)
            result.Columns.Add(col.ColumnName, col.DataType);
    }
    foreach (DataRow row1 in t1.Rows)
    {
        var joinRows = t2.AsEnumerable().Where(row2 =>
            {
                foreach (var parameter in joinOn)
                {
                    if (!parameter(row1, row2)) return false;
                }
                return true;
            });
        foreach (DataRow fromRow in joinRows)
        {
            DataRow insertRow = result.NewRow();
            foreach (DataColumn col1 in t1.Columns)
            {
                insertRow[col1.ColumnName] = row1[col1.ColumnName];
            }
            foreach (DataColumn col2 in t2.Columns)
            {
                insertRow[col2.ColumnName] = fromRow[col2.ColumnName];
            }
            result.Rows.Add(insertRow);
        }
    }
    return result;
}