获取前 3 个最受欢迎的项目 c# linq EF

Posted

技术标签:

【中文标题】获取前 3 个最受欢迎的项目 c# linq EF【英文标题】:Get top 3 most popular items c# linq EF 【发布时间】:2020-07-09 06:01:27 【问题描述】:
public class OrderItem

    [Key]
    public int ItemId  get; set; 
    public int ProductId  get; set; 
    public virtual Product product  get; set; 
    public int Quantity  get; set; 

public class Product

    [Key]
    public int ProductId  get; set; 

这是我的两节课。我想按每个产品的数量选择前 3 个最受欢迎的产品。喜欢:

[ProductTable]
1
2
3
4


[OrderItemTable]
1, 1, 20
2, 2, 10
3, 3, 5
4, 4, 100
5, 3, 25

结果应该是: 4、3、1 或产品列表。 谢谢。

【问题讨论】:

【参考方案1】:

我确信这绝不是最佳的,但我相信这是你想要的

context.Set<OrderItem>()
.GroupBy(x=>x.ProductId)
.Select(x=>newProductId=x.Key, QuantitySum=x.Sum(a=>a.Quantity))
.OrderByDescending(x=>x.QuantitySum)
.Select(x=>x.ProductId)
.Take(3)
.ToList();

【讨论】:

【参考方案2】:

以下代码已经过测试,运行正常,希望对你有所帮助

var row = (from x in OrderItem
           group x by new  x.ProductId  into val
           select new
           
               val.Key.ProductId,
               QuantitySum = val.Sum(s => s.Quantity)
           ).OrderByDescending(i => i.QuantitySum).Take(3);

【讨论】:

以上是关于获取前 3 个最受欢迎的项目 c# linq EF的主要内容,如果未能解决你的问题,请参考以下文章

6个最受欢迎的人工智能学习项目!开源!

18个最受欢迎的低代码开发平台开源

5个最受欢迎的大数据可视化软件

15个最受欢迎的Python开源框架

5个最优秀的Java和C#代码转换工具

15个最受欢迎的Python开源框架(转)