1

編集済み:注文データを取得していて、最初のテーブルのproductIDを使用して別のテーブルから製品の説明を取得しようとしています。以下のコードは正常に機能しますが、productidを使用してproductsテーブルにクエリを実行し、文字列、製品の説明を取得する必要があります

 Dim result = From c In ctx.orders
                         Where c.CustomerId = 13
                Select New With
                {c.OrderDate,
                 c.PurchaseOrderNumber,
                 c.ProductId,
                 c.ProductPrice,
                 c.ProductQty}

以下の提案を試してみましたが、このメソッドを使用して「productidという名前のフィールドまたはプロパティが存在しません」というエラーが発生しました

 Dim result = From c In ctx.orders
                         Where c.CustomerId = 13
                  Join prod In ctx.products on c.ProductId Equals prod.Id
                Select New With
                {c.OrderDate,
                 c.PurchaseOrderNumber,
                 prod.Description,
                 c.ProductPrice,
                 c.ProductQty}
4

2 に答える 2

0

これを使用しない理由: Dim result = From c In ctx.orders .Where(c => c.CustomerId = 13) .SelectMany(c => c.products); 次に、すべての製品をオーダ​​ーで取得します。

于 2012-11-16T01:32:16.037 に答える
0

結合演算子 C# バージョン結合演算子 VB バージョンを使用しない理由

Dim result = From c In ctx.orders
             Join prod In ctx.products On c.ProductId Equals prod.Id
             Where c.CustomerId = custid
             Select New With
                    {c.OrderDate,
                      prod.Description
                     c.ProductPrice,
                     c.ProductQty}

結合をテストするサンプル クラスを作成しましたが、これは完全に機能しました。製品テーブルがロードされ、プロパティがありますか?

Module Module1

Sub Main()
    Dim ctx As List(Of X) = New List(Of X)
    Dim x1 As X = New X()
    x1.One = 1
    x1.Two = 2
    Dim x2 As X = New X()
    x2.One = 10
    x2.Two = 20
    ctx.Add(x1)
    ctx.Add(x2)

    Dim ctx2 As List(Of Y) = New List(Of Y)
    Dim y1 As Y = New Y()
    y1.Three = 1
    y1.Four = 2
    Dim y2 As Y = New Y()
    y2.Three = 10
    y2.Four = 20
    ctx2.Add(y1)
    ctx2.Add(y2)

    Dim result = From c In ctx
         Join prod In ctx2 On c.One Equals prod.Three
         Where c.One = 1
         Select New With
                {c.One,
                 prod.Four,
                 c.Two}

    For Each a In result
        Console.Beep()
    Next

    Console.Read()
End Sub

Class X
    Public Property One As Integer
    Public Property Two As Integer
End Class

Class Y
    Public Property Three As Integer
    Public Property Four As Integer
End Class

End Module
于 2012-11-16T00:11:16.620 に答える