在实体框架中获取表的前N行

本文关键字:获取 实体 框架 | 更新日期: 2023-09-27 17:58:40

我遇到了一个问题。除其他外,我的数据库中有以下表格:

Product (int productId, ...otherProductInfo)
Customer (int customerId, ...otherCustomerInfo)
SoldToData ( int productId, int customerId)

我想在MVC2中使用实体框架获得十大畅销产品。我该怎么做?

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////按照kip和Pr0ess0RX的建议,这就是我迄今为止所做的,而且似乎正在发挥作用:

using (Entities db = new Entities())
{
    var groupedProducts = (from p in db.Products
                        join s in db.SoldToData
                            on p.productId equals s.productId
                        group p by p.id
                            into ProductGroup
                            orderby ProductGroup.Count() descending
                            select ProductGroup).Take(10).ToList();
     List<Products> products = new List<Products>();
     products.AddRange(groupedProducts.Select(gp => gp.First()));
}

这是正确的方式吗?

在实体框架中获取表的前N行

如果您有一个IQueryable来查询数据源,您可以使用orderby etc进行排序,然后使用Take(10)?

  1. 加入产品和客户
  2. 将它们分组,并获得每个客户的产品数量
  3. 按计数降序排列
  4. 占据前10位
  5. 获取结果产品的名称(前10名)