微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Linq 使用交叉表连接填充 BindingSource

如何解决使用 Linq 使用交叉表连接填充 BindingSource

如果我的术语有误,请见谅。我有以下数据集:

enter image description here

我有一个通过从 VS DataSources 窗口拖放的主从页面,它允许用户选择一个特定的构建,它显示构建详细信息以及每个构建中使用的每个供应商组件的进一步详细信息页面

enter image description here

我想要的是右上角的 DataGridView(BuildsupplierComponents by BuildID)显示链接的供应商和组件表(通过供应商组件表)的详细信息,而不是供应商组件表中条目的 ID。>

我想我可以使用 Linq 来执行连接(基本上是深度为 2?),然后将右上角的 DataGridView 的数据源设置为 linq 结果。因此我尝试了以下代码

Private Sub BuildBindingSource_CurrentChanged(sender As Object,e As EventArgs) Handles BuildBindingSource.CurrentChanged
    If BuildBindingSource.Current Is nothing Then Return

    Dim BuildID As Integer = DirectCast(BuildBindingSource.Current.row,MainDataSet.buildrow).ID

    Dim var = From bsc In DirectCast(MainDS.Tables("BuildsupplierComponents"),MainDataSet.BuildsupplierComponentsDataTable)
              Join sc In DirectCast(MainDS.Tables("supplierComponent"),MainDataSet.supplierComponentDataTable) On sc.ID Equals bsc.supplierComponentID
              Join s In DirectCast(MainDS.Tables("supplier"),MainDataSet.supplierDataTable) On s.ID Equals sc.supplierID
              Join c In DirectCast(MainDS.Tables("Component"),MainDataSet.ComponentDataTable) On c.ID Equals sc.ComponentID
              Where bsc.BuildID = BuildID
              Select New With {.supplier = s.Name,.component = c.Name}

    BuildsupplierComponentsBindingSource.DataSource = var

End Sub

然而,即使 BuildsupplierComponents 中有数据,这也会产生空结果。

有什么想法可以实现这一目标吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?