2011-10-18 82 views
3

我想知道如何在VB.NET下使用LINQ查詢中的組連接。出於某種原因,我似乎在語法上找到的每個示例都只是簡單的錯誤!至少,這是我的編譯器一直告訴我的。我在這裏做錯了什麼?在VB.NET中使用LINQ組連接

這是一個簡單的例子,我想,這樣我結束了包含由他們的訂單ID的組合在一起的訂單項目集合的類型加入訂單,其訂單項目:

Dim groupedOrders = (From o In orders 
        Group Join i In orderItems On o.OrderId Equals a.OrderId Into myOrders 
        Select o.OrderId, myOrders).ToList() 

我」什麼目前在這個例子中遇到的是我創建錯誤的'myOrders'組:

方法'myOrders'的定義在此上下文中不可訪問。

回答

4

在VB中,進入別名需要是「組」而不是myOrders。使用羅斯文你可以說出你的查詢,如下所示:

Dim groupedOrders = 
    From o On Orders 
    Group Join od in Order_Details On o.OrderID Equals od.OrderID Into Group 
    Select o.OrderID, Details = Group 

如果你想別名組爲別的東西,你可以用:

Dim groupedOrders = 
    From o On Orders 
    Group Join od in Order_Details On o.OrderID Equals od.OrderID Into GroupedDetails = Group 
    Select o.OrderID, GroupedDetails 

話雖這麼說,如果你的訂單和的OrderItems來了從數據庫供應商,你可以只使用天然的關聯,而不是需要在所有的連接:也

Dim groupedOrders = 
    From o In Orders 
    Select o.OrderID, Details = o.Order_Details 

,如果你只需要通過組外鍵,你不需要在p arent表:

Dim groupedOrders = 
    From od In Order_Details 
    Group od By Key = od.OrderID Into Group 
    select Key, Group 
2

你很近。你只需要指定myOrdersGroup

Dim groupedOrders = (From o In orders 
        Group Join i In orderItems On o.OrderId Equals a.OrderId 
        Into myOrders = Group 
        Select o.OrderId, myOrders).ToList() 

可以看到類似的例子,包括如何獲取該集團的Count,從這個MSDN頁:Introduction to LINQ in Visual Basic