我需要使用Linq to Entities获得前10名记录。
我需要将返回的结果绑定到GridView
,如下所示“
Product Name | Product Description | Number of Items Sold
Item 1 | Item 1 Description | 24
根据上述情况,需要按顺序存储物品,从销售的物品开始。
我尝试了一些示例,例如this,this,并遵循examples here。
以下是我到目前为止所尝试的内容:
public IQueryable GetTopTenProducts(DateTime startDate, DateTime endDate)
{
return
(from p in this.Entities.Product
join pro in this.Entities.ProductOrder on p.ID equals pro.ProductID
join o in this.Entities.Order on pro.OrderID equals o.ID
where o.DateOfOrder >= startDate && o.DateOfOrder <= endDate
select new
{
Product = p,
Quantity = pro.Qty,
ProductName = p.Name,
ProductDescription = p.Description
} into productQty
group productQty by productQty.Product into pg
let totalQuantity = pg.Sum(prod => prod.Quantity)
orderby totalQuantity descending
select pg.Key).Take(10);
}
这会返回整个产品表,但我只需要检索上面粘贴的详细信息。
有什么想法吗?
答案 0 :(得分:5)
我认为您必须更改上一次选择select pg.Key
以选择您想要的内容
例如:select new { pg.Key.ProductName, pg.Key.ProductDescription, totalQuantity }
答案 1 :(得分:1)