我需要知道如何使用Linq在VB.Net中保留多个表的连接。
到目前为止我所拥有的:
Dim linqVorauswahl = (From e In ds.Tables("id_EAN")
Join gmpfr In ds.Tables("id_GetMatchingProductForIdResult") On e.Field(Of String)("id_EAN") Equals gmpfr.Field(Of String)("id_Id")
Join prods In ds.Tables("id_Products") On gmpfr.Field(Of Nullable(Of Int32))("id_GetMatchingProductForIdResult_Id") Equals prods.Field(Of Nullable(Of Int32))("id_GetMatchingProductForIdResult_Id")
Join prod In ds.Tables("id_Product") On prods.Field(Of Nullable(Of Int32))("id_Products_Id") Equals prod.Field(Of Nullable(Of Int32))("id_Products_Id")
Join ident In ds.Tables("id_Identifiers") On prod.Field(Of Nullable(Of Int32))("id_Product_Id") Equals ident.Field(Of Nullable(Of Int32))("id_Product_Id")
Join asinmp In ds.Tables("id_MarketplaceAsin") On ident.Field(Of Nullable(Of Int32))("id_Identifiers_Id") Equals asinmp.Field(Of Nullable(Of Int32))("id_Identifiers_Id")
Join attrSets In ds.Tables("id_AttributeSets") On ident.Field(Of Nullable(Of Int32))("id_Product_Id") Equals attrSets.Field(Of Nullable(Of Int32))("id_AttributeSets_Id")
Join itemAttr In ds.Tables("id_ItemAttributes") On attrSets.Field(Of Nullable(Of Int32))("id_AttributeSets_Id") Equals itemAttr.Field(Of Nullable(Of Int32))("id_AttributeSets_Id")
Join saleRankings In ds.Tables("id_SalesRankings") On prod.Field(Of Nullable(Of Int32))("id_Product_Id") Equals saleRankings.Field(Of Nullable(Of Int32))("id_Product_Id")
Join salesRank In ds.Tables("id_SalesRank") On saleRankings.Field(Of Nullable(Of Int32))("id_SalesRankings_Id") Equals salesRank.Field(Of Nullable(Of Int32))("id_SalesRankings_Id")
Where itemAttr.Field(Of String)("id_Binding") <> "Wine" And
itemAttr.Field(Of String)("id_Binding") <> "Lebensmittel & Getränke" And
itemAttr.Field(Of String)("id_Binding") <> "Product Bundle"
Select New With {
.asinMP = asinmp.Field(Of String)("id_MarketplaceId"),
.ean = e.Field(Of String)("id_EAN"),
.asin = asinmp.Field(Of String)("id_ASIN"),
.title = itemAttr.Field(Of String)("id_Title"),
.status = gmpfr.Field(Of String)("id_status"),
.binding = itemAttr.Field(Of String)("id_Binding"),
.rank = Convert.ToInt32(salesRank.Field(Of String)("id_Rank"))
}).ToArray
我需要保留最后两个联接,因为它们并不总是填充/可用。
Join saleRankings In ds.Tables("id_SalesRankings") On prod.Field(Of Nullable(Of Int32))("id_Product_Id") Equals saleRankings.Field(Of Nullable(Of Int32))("id_Product_Id")
Join salesRank In ds.Tables("id_SalesRank") On saleRankings.Field(Of Nullable(Of Int32))("id_SalesRankings_Id") Equals salesRank.Field(Of Nullable(Of Int32))("id_SalesRankings_Id")
您对解决此问题有任何简单的想法吗?如果可能的话,在一个查询中。