【问题标题】:Can I inner join two DataTables where tableA.myColumn = tableB.myColumn?我可以在 tableA.myColumn = tableB.myColumn 的情况下内部连接两个 DataTables 吗?
【发布时间】:2012-12-20 20:50:21
【问题描述】:

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

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

这两个电子表格完全相同,只有一个区别。在“Total Dollars”电子表格中,有一列包含美元金额,而在“Total Units”电子表格中,它是一个包含单位金额的列。

我想INNER JOIN这两个表WHENtableA.UPC = tableB.UPC。这可能吗?我已经阅读了有关 DataSets 和 DataRelations 的内容,但我想知道是否有更简单的方法?

谢谢!

【问题讨论】:

    标签: asp.net vb.net datatable


    【解决方案1】:

    使用 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
                }
    

    【讨论】:

    • @user1496816 你不需要任何特别的东西。如果你在 .NET 3.5 上运行它,你应该很好。
    • 没关系,服务器确实支持 .NET 3.5。另外,这是在 C# 中吗?我使用 C# 到 VB.NET 的转换器,但它不喜欢这段代码。
    【解决方案2】:

    不要投票,但想粘贴一个 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")
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      相关资源
      最近更新 更多