当前位置: 首页 > 面试题库 >

Linq to SQL:获得订购量最大的前十种产品

祁烈
2023-03-14
问题内容

我想抢购10种订购最多的产品。我的表看起来像这样:

产品
ProductID | ProductName

订购产品
ProductID | OrderID

命令
OrderID | DateOrdered

目前,我有以下几点:

return (from product in db.Products
        from orderedProduct in db.OrderedProducts
        where orderedProduct.ProductID == product.ProductID
        select product).OrderByDescending(???).Distinct().Take(10);

我在上面的查询中已经指出,我不确定该放置什么。如何按订购产品表中显示的产品数量订购产品?


问题答案:
return (from product in db.Products
        from orderedProduct in db.OrderedProducts
        where orderedProduct.ProductID == product.ProductID
        group orderedProduct by product into productGroups
        select new 
        {
              product = productGroups.Key, 
              numberOfOrders = productGroups.Count() 
        }
        ).OrderByDescending(x => x.numberOfOrders).Distinct().Take(10);

它将给您10个项目,每个项目都包含产品对象,以及numberOfOrders整数。

编辑

由于这将作为方法的返回值,并且由于C#不允许返回匿名类型(因此C.4.0中仍具有此功能),因此您可以将匿名类型转换为类。

创建您要返回的类型的类

public class ProductOrders
{
    public ProductOrders() {
    }

    public Product product { get; set; }
    public int numberOfOrders { get; set; }
}

并使用此查询返回该类的对象

 return (from product in db.Products
        from orderedProduct in db.OrderedProducts
        where orderedProduct.ProductID == product.ProductID
        group orderedProduct by product into productGroups
        select new ProductOrders
        {
              product = productGroups.Key, 
              numberOfOrders = productGroups.Count() 
        }
        ).OrderByDescending(x => x.numberOfOrders).Distinct().Take(10);

现在的返回值为type IEnumerable<ProductOrders>



 类似资料:
  • 问题内容: 我有这样的查询 现在,在我的查询中,我想获得每个类别的前10个产品(按销售量排名最高),并且每个类别我需要前5个子类别(按销售量排名前列) 您可以假设问题陈述是这样的: 按销售获得每个类别的前10个产品,按销售获得每个5个子产品。 这里的类别可以是书籍 产品可以是Harry Porter的书 子产品可以是HarryPorter系列5 样本输入数据格式 输出将是“ 我的查询失败,因为结果

  • 问题内容: 例如,给定此表的稀疏ID: 我可以使用以下查询从表中获取最高的“ id”: 我得到: 我如何才能在最高“ id”之前获得“ id”(即使值不是连续的)? 问题答案: 是相同的 注意:这是事务性sql语法,根据您的供应商使用rownum或limit 获得第二行,你可以做

  • 我想在我的woocommerce商店中为低于特定金额(价值,而不是数量)的订单添加费用。 我使用的"WooCommerce动态最小订单金额为基础的费用"回答代码,完美的作品。 现在我试图改变这个功能,并将其仅应用于特定产品类别的项目。基本上,我要把购物车中所有与特定类别相匹配的产品的价值求和,并使用这个价值进行费用计算。 我怎样才能达到这个目标?

  • 问题内容: 我有两个线程: 线程数:1 线程数:2 在这里,a和b被声明为volatile。我不了解如何在a = 1之间创建“先发生”边;y = a; 在x = b之间; 并且b = 1; 我知道通过使用volatile变量可以防止从线程缓存中读取过时的值。但是,可变变量如何才能确保在订购前发生。 具体来说,我不明白这一点: 后续每次读取同一字段之前,都会对易失字段进行写操作。 e头有效吗? 问题

  • 问题内容: 如何在Mongoose查询中获得最大值。在SQL中很容易 我想在Mongoose(node.js)中等效上述SQL代码 问题答案: MongoDB支持最大/最小,但他们不建议在实际应用中使用它: min和max主要用于支持mongos(分片)过程。 http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers 您几乎可

  • 问题内容: 我很难提出一个查询,该查询将找到同时购买了PROD1和PROD2的所有客户。 这是一个伪查询,看起来像我想要做的:(显然这是行不通的) 因此,基本上,我正在尝试对表中有product_id’ ‘和’ ‘事务的不同用户ID的数量进行计数。每个事务都存储在表中的一行中。 问题答案: 我通过以下方式进行这种类型的查询: @najmeddine显示的解决方案还会产生您想要的答案,但在MySQL