0

我正在解析 Excel 工作簿并将数据提取到两个 DataTables 中,如下所示:

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这两个表WHENtableA.UPC = tableB.UPC。这可能吗?我已经阅读了有关 DataSets 和 DataRelations 的信息,但我想知道是否有更简单的方法?

谢谢!

4

2 回答 2

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
            }
于 2012-12-20T21:16:03.123 回答
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")
        }
于 2012-12-20T22:37:25.300 回答