帮助将c#Linq查询与2组翻译成vb.net linq查询

时间:2011-01-06 14:08:20

标签: linq

大家好,

我尝试过尝试在vb.net中进行此查询,但我不能。 我不明白我是否必须使用两组,如果是,我该如何使用它们。 这是项目中的查询 - Tailspin SpyWorks教程 并应该有助于展示5种最受欢迎​​的产品。 我真的不明白该怎么做。

var query = (from ProductOrders in db.OrderDetails
             join SelectedProducts in db.Products on ProductOrders.ProductID
             equals SelectedProducts.ProductID
             group ProductOrders by new
              {
                ProductId = SelectedProducts.ProductID,
                ModelName = SelectedProducts.ModelName
              } into grp
             select new
              {
                ModelName = grp.Key.ModelName,
                ProductId = grp.Key.ProductId,
                Quantity = grp.Sum(o => o.Quantity)
              } into orderdgrp
             where orderdgrp.Quantity > 0
             orderby orderdgrp.Quantity descending
             select orderdgrp).Take(5);

我尝试进行翻译,但找不到帮助我了解如何管理两个小组的文档。

Dim query = (From ProductOrders in db.OrderDetails
                     Join SelectedProducts in db.Products On 
                     ProductOrders.ProductID Equals SelectedProducts.ProductID
                     Group ProductOrders By New With
                       {
                          .ProductId = SelectedProducts.ProductID,
                          .ModelName = SelectedProducts.ModelName 

                      } into grp

事实上,从现在开始,我不能继续 如果有人可以请你帮我 非常感谢 的Fabrizio

1 个答案:

答案 0 :(得分:0)

我不是VB语言的专家,但以下代码在语法上是正确的:

Dim query = (From ProductOrders In Products
                     Join SelectedProducts In SelProducts On ProductOrders.ProductId Equals SelectedProducts.ProductId
                     Group ProductOrders By Key = New With {
                         .ProductId = SelectedProducts.ProductId,
                         .ModelName = SelectedProducts.ModelName
                     } Into grp = Group
                     Select orderdgrp = New With
                     {
                         .ModelName = Key.ModelName,
                         .ProductId = Key.ProductId,
                        .Quantity = grp.Sum(Function(o) o.Quantity)
                     }
                 Where orderdgrp.Quantity > 0
                 Order By orderdgrp.Quantity Descending
                 Select orderdgrp).Take(5)

验证查询在语义上是否正确。