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

标签 c# entity-framework linq asp.net-core

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; }
}

这是我的两个类(class)。我想根据每种产品的数量选择前 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 或产品列表。
谢谢。

最佳答案

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

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

关于c# - 获取前 3 个最受欢迎的项目 c# linq EF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60903937/

相关文章:

c# - 在自动生成的属性中实例化对象

c# - 无法将 linq 结果隐式转换为 View 模型列表

c# - 将存档的 blob 复制到在线层

c# - ViewModel 直接绑定(bind)到 Entity Framework 模型的副作用

linq - 扩展方法转换为 LINQ 表达式和常用方法

c# - 我们可以用 c# 在 asp.net 中制作多语言枚举吗

c# - 如何使用 Entity Framework (Core) 解决每组最大 n 问题?

sql - 如何自动将实体模型更改部署到数据库?

C# SqlMethods 喜欢不工作

c# - GroupBy 选择的 LINQ 错误 : System. NotSupportedException