C# 如何根据特定字段的出现情况获取数据库中前5项?
使用Ado.Net实体框架,我试图根据“前3个”项在表中出现的次数来获取表中的“前3个”项 例如: 表: 篮子到产品id |篮子到产品id | 我想看看product_id出现了多少次,并想返回出现频率最高的前3个product_id 我被困在:C# 如何根据特定字段的出现情况获取数据库中前5项?,c#,entity-framework,ado.net-entity-data-model,C#,Entity Framework,Ado.net Entity Data Model,使用Ado.Net实体框架,我试图根据“前3个”项在表中出现的次数来获取表中的“前3个”项 例如: 表: 篮子到产品id |篮子到产品id | 我想看看product_id出现了多少次,并想返回出现频率最高的前3个product_id 我被困在: List<BasketToProduct> btplist = entities.BasketToProduct. ..........? List btplist=entities.BasketToProduct。。。。。。。。。。?
List<BasketToProduct> btplist = entities.BasketToProduct. ..........?
List btplist=entities.BasketToProduct。。。。。。。。。。?
您可以尝试在表上使用LINQ查询。类似的方法应该可以工作(当然我不知道您的属性的实际名称):
IEnumerable Top3ProductId=(来自entities.BasketToProduct中的btp
按btp.ProductId将btp分组为g
orderby g.Count()降序
选择g键),取(3);
试试这个:
var query = entities.BasketToProduct
.GroupBy(btp => btp.ProductID)
.Select(g => ProductID = g.Key, Count = g.Count())
.OrderBy(g => g.Count)
.Take(3);
它将为您提供前三名productID
及其相关计数
var query = entities.BasketToProduct
.GroupBy(btp => btp.ProductID)
.Select(g => ProductID = g.Key, Count = g.Count())
.OrderBy(g => g.Count)
.Take(3);