如何解决使用 Linq 使用交叉表连接填充 BindingSource
如果我的术语有误,请见谅。我有以下数据集:
我有一个通过从 VS DataSources 窗口拖放的主从页面,它允许用户选择一个特定的构建,它显示构建详细信息以及每个构建中使用的每个供应商组件的进一步详细信息页面:
我想要的是右上角的 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 举报,一经查实,本站将立刻删除。