如何在C#异步方法中返回枚举与计数映射的StatusCount列表
解决方案
首先修正代码中的变量名错误(第三个查询重复命名为query2,需改为query3),同时为契合异步方法规范,将同步的Count()替换为EF Core的异步方法CountAsync(),最后直接构建List<StatusCount>完成枚举与计数的一一映射:
public class StatusCount { public string Status { get; set; } public int Count { get; set; } } public enum myEnum { A, B, C } public async Task<List<StatusCount>> GetStatusCount() { // 修正变量名并使用异步计数方法 var query1 = await _dbcontext.Table1.Include(t => t.RelatedEntity).Where(t => t.Condition).CountAsync();//10 var query2 = await _dbcontext.Table2.Include(t => t.RelatedEntity).Where(t => t.Condition).CountAsync();//5 var query3 = await _dbcontext.Table3.Include(t => t.RelatedEntity).Where(t => t.Condition).CountAsync();//15 // 映射枚举与对应计数,生成目标列表 return new List<StatusCount> { new StatusCount { Status = nameof(myEnum.A), Count = query1 }, new StatusCount { Status = nameof(myEnum.B), Count = query2 }, new StatusCount { Status = nameof(myEnum.C), Count = query3 } }; }
关键说明
- 用
nameof(myEnum.A)获取枚举字符串名称,避免硬编码字符串引发的维护问题 - 异步方法中必须通过
await调用异步数据库操作,保证非阻塞执行 - 返回的列表结构完全匹配你需要的JSON输出格式
内容的提问来源于stack exchange,提问作者user2580179
相关产品推荐
相关产品推荐

