2011-10-18 23 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() 

この例では、現在実行中の 'my​​Orders'グループでエラーを作成しています:

このコンテキストでは、メソッド 'myOrders'にアクセスできません。

答えて

4

VBでは、IntoエイリアスはmyOrdersではなく「Group」である必要があります。使用して次のようにNorthwindのあなたのクエリを述べることができます:

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を必要としませんテーブル:

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

もうすぐです。あなただけGroupとしてmyOrdersを指定する必要があります:Introduction to LINQ in Visual Basic

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() 

あなたはこのMSDNページから、グループの Countを取得する方法を含め、同様の例を見ることができます。

関連する問題