簡體   English   中英

LINQ:“組聯接”功能聯接三個表

[英]LINQ: “Group Join” functionality joining three tables

我已經搜索了先前的問題,但似乎找不到我想要的東西,所以請原諒n00b LINQ問題...我正在努力熟悉LINQ,並開始關注語法和用法。

在練習中,我整理了以下查詢:

Dim r2 = From cust In cData.Customers _
                      Group Join ord In cData.Orders
                      On cust.CustomerID Equals ord.CustomerID
                      Into custorders = Group

我了解了這個查詢,它給了我一個客戶對象,然后是每個客戶對象的IEnumerable custorders集合。

我似乎無法弄清楚的是,如何實現相同的結果格式,但是要使用Group Join添加第三個表“ Products”,這樣我就可以返回“ Products”字段,例如“ ProductName”和“ ProductPrice”。

我有以下三個來源:

Public Customers As New List(Of Customer)
Public Products As New List(Of Product)
Public Orders As New List(Of Order)

相關字段為:

Orders.OrderID
Orders.OrderDate
Orders.CustomerID
Orders.ProductID
Customers.CustomerID
Customers.FirstName
Customers.LastName
Products.ProductID
Products.ProductName
Products.ProductPrice

我想我的第一個問題是此時是否應該使用組聯接? 如果是這樣,我將如何構成查詢? 如果沒有,是否有一種簡單,直接的方法可以使用LINQ獲得相同的結果?

任何幫助,將不勝感激!

更新:

我提出了以下查詢,它似乎可以解決我的問題:

Dim r4 = From cust In cData.Customers, ord In cData.Orders, _
                 prod In cData.Products _
                 Where ord.CustomerID = cust.CustomerID And _
                 ord.ProductID = prod.ProductID _
                 Group ord, prod By cust Into custorders = Group

所以我想我現在的問題是,這是實現目標的最佳方法嗎? 還是使用另一種方法會更有效?

如果您真正想要的是3級層次結構,請嘗試:

Dim orderProds = From order In cData.Orders _
          Group Join prod In cData.Products _
          On order.ProductID Equals prod.ProductID Into OrderProducts = Group

Dim customerOrderProducts = From cust In cData.Customers _
                            Group Join ordProd In orderProds _
                            On cust.CustomerID Equals ordProd.order.CustomerID Into custOrderProds = Group

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM