我有一个包含2个数据表的数据集。这些表是从2个不同的Oracle数据库中检索的(物理上和逻辑上是分开的)。
我需要在这两个驻留在1个数据集中的表上进行内部联接。然后在gridview中显示结果。
是否有可能在数据集内的表上执行SQL连接?
如果是,有没有人有一个成功的例子?如果没有,有人可以指出我正确的方向 - 我不希望做任何" hacks" (手动循环直播和其他迭代)因为我相信在环境中会有一种方法,只需要正确的方法。
这是VB .net所以我们希望得到一个更相关的代码,但我们非常感谢任何帮助。
答案 0 :(得分:0)
试试这个方法助手:
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;
}