在实体框架中获取表的前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()));
}
这是正确的方式吗?
如果您有一个IQueryable来查询数据源,您可以使用orderby etc进行排序,然后使用Take(10)?
- 加入产品和客户
- 将它们分组,并获得每个客户的产品数量
- 按计数降序排列
- 占据前10位
- 获取结果产品的名称(前10名)