我想弄清楚如何在 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' 组:
Definition of method 'myOrders' is not accessible in this context.
最佳答案
在 VB 中,Into 别名需要是“Group”而不是 myOrders。使用 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
话虽如此,如果您的订单和订单项来自数据库提供者,您可以只使用自然关联而根本不需要联接:
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
关于vb.net - 在 VB.NET 中使用 LINQ 组联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811417/