2011-10-18 4 views
3

VB.NET 아래에있는 LINQ 쿼리에서 그룹 조인을 사용하는 방법을 알아 내려고하고 있습니다. 웬일인지, 내가 구문에서 발견하는 모든 예제는 단지 잘못되었다! 적어도 그것은 컴파일러에서 계속 알려주는 것입니다. 정확히 내가 여기서 잘못하고있는 게 뭐야?VB.NET에서 LINQ 그룹 조인 사용

이것은 내가 그들의 ORDERID의에 의해 그룹화 주문 항목의 컬렉션을 포함하는 형태로 끝날 수 있도록 순서 항목에 주문을 가입하려는 간단한 예입니다 : 내가 '무엇

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에서는 Into 별칭이 myOrders가 아닌 "Group"이어야합니다. 당신이 다른 어떤 것으로 그룹 별칭을하려면

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 

, 당신은 사용할 수 있습니다 : 귀하의 주문 및 ORDERITEMS가 오는 경우

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 

즉, 말했다되고 다음과 같이 쿼리를 명시 할 수 Northwind를 사용하여 데이터베이스 공급자, 그냥 전혀 가입 필요로하는 천연 연결을 사용할 수 없습니다 : 당신은 단지 외래 키가 그룹에 필요한 경우,

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

을 또한, 당신은 페이지가 필요하지 않습니다 대기열 테이블 :

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

끝났습니다. 넌 그냥 GroupmyOrders을 지정해야합니다 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을 얻는 방법을 포함하여, 유사한 예를 볼 수 있습니다.