写一个ASPNET Core API用ef core统计数据库中指定userid各状态订单数量
以下是一个可能的实现:
首先,我们需要定义一个数据模型来表示订单:
public class Order
{
public int Id { get; set; }
public int UserId { get; set; }
public string Status { get; set; }
}
然后我们需要定义一个DbContext来访问数据库:
public class MyDbContext : DbContext
{
public DbSet<Order> Orders { get; set; }
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
}
接下来,我们可以定义一个Controller来提供API:
[ApiController]
[Route("[controller]")]
public class OrderController : ControllerBase
{
private readonly MyDbContext _dbContext;
public OrderController(MyDbContext dbContext)
{
_dbContext = dbContext;
}
[HttpGet]
public IActionResult Get(int userId)
{
var result = _dbContext.Orders
.Where(o => o.UserId == userId)
.GroupBy(o => o.Status)
.Select(g => new
{
Status = g.Key,
Count = g.Count()
})
.ToList();
return Ok(result);
}
}
在Get方法中,我们首先选择所有属于指定userId的订单,然后按状态分组,最后选择每个状态的订单数量。我们将结果转换为一个匿名类型列表并返回。
最后,我们需要在Startup.cs中注册DbContext和Controller:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyDb")));
services.AddControllers();
}
这样,我们的API就完成了。当我们向/order?userId=1发送GET请求时,将返回属于用户1的所有订单的状态计数
原文地址: https://www.cveoy.top/t/topic/fCXm 著作权归作者所有。请勿转载和采集!