vb.net - 在 VB.NET 中使用 LINQ 组联接

标签 vb.net linq join linq-group

我想弄清楚如何在 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/

相关文章:

java - Hibernate HQL 中的完全加入

vb.net - 如何在 VB.NET 中向 IEnumerable(Of T) 添加项目?

json - 发送 JSON 内容类型的 POST 请求并在 VB.NET 中显示 JSON 响应

c# - 如何在 LINQ 中用 Join 重写两个表的 SQL Union?

c# - linq连接错误

mysql - 连接两个表并求和计数记录

asp.net - 基于用户首选项的LINQ查询

javascript - J查询Session与.net Session不同吗?

c# - 使用 Linq 抛出异常

c# - Windows Azure 表,使用 Contains 进行查询