我正在解析Excel工作簿并将数据提取到两个DataTable中,如下所示:
If SetDBConnect("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath & ";
Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""", True) Then
'Get total dollars table
sql.Append("SELECT * FROM [" & totalDollars & "]")
dt = _dh.GetTable(sql.ToString())
sql.Length = 0
sql.Append("SELECT * FROM [" & totalUnits & "]")
dt_units = _dh.GetTable(sql.ToString())
End If
两个电子表格完全相同,只有一个区别。在“总计美元”电子表格中,有一列包含美元金额,在“总单位”电子表格中,它是一个单位金额的列。
我想INNER JOIN
这两个表WHEN
tableA.UPC = tableB.UPC。这可能吗?我读过有关DataSet和DataRelations的内容,但我想知道是否有更简单的方法?
谢谢!
答案 0 :(得分:2)
使用Linq的一个简单方法是:
var query = from c in dt.AsEnumerable()
join r in dt_units.AsEnumerable()
on c.Filed<string>("UPC") equals r.Field<string>("UPC")
select new {
UPC= r.Field<string>("UPC"),
//and so on.. you pick whatever columns you need from each table
}
答案 1 :(得分:1)
不要投票,但想粘贴一个VB .NET版本:
Dim query = From c In dt.AsEnumerable() _
Join r In dt_units.AsEnumerable() _
On c.Field(Of String)("UPC") Equals r.Field(Of String)("UPC") _
Select New With
{
.UPC = r.Field(Of String)("UPC")
}