[英]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.