asp.net - 如何仅在 api json 中获取年份
问题描述
在这里,我创建了一个 API,在其中我从表列createdAt中获取平均值和年份。
public async Task<ICollection<SchoolSystemOverallAveragePerYearVm>> GetSchoolSystemOverallAveragePerYear(Guid schoolSystemId)
{
var schoolsystemYearAvg = _GpsContext.SchoolSystem.Where(s => s.Id == schoolSystemId);
var tem = _GpsContext.AssignmentStudents
.Include(a => a.Assignment)
.ThenInclude(s => s.SchoolSystems)
.GroupBy(g => // Group by your Key-Values Grade and Course (You could take names instead of ids. Just for simplification)
new {
Year = g.CreatedAt,// CreateAt is the column name in the table datetime type.
})
.Select(g => // Select the result into an anonymous type
new SchoolSystemOverallAveragePerYearVm
{
Year = g.Key.Year.ToString(),
AverageObtainedMarks = g.Average(a => a.ObtainedMarks) // and an average ObtainedMarks from objects matching the key
});
List<SchoolSystems> schoolSystems = await schoolsystemYearAvg.ToListAsync();
var averageYearVms = await tem.ToListAsync();
return averageYearVms;
}
现在 JSON 结果是这样的:
[
{
"averageObtainedMarks": 90,
"year": "04/04/2019 00:00:00"
},
{
"averageObtainedMarks": 30,
"year": "04/04/2020 00:00:00"
}
]
我只想像甲酸2020一样获得年份
解决方案
如何按年份而不是日期分组:
public async Task<ICollection<SchoolSystemOverallAveragePerYearVm>> GetSchoolSystemOverallAveragePerYear(Guid schoolSystemId)
{
var tem = _GpsContext.AssignmentStudents
.Include(a => a.Assignment)
.ThenInclude(s => s.SchoolSystems)
// Group by year - CreatedAt is nullable DateTime
.GroupBy(g => g.CreatedAt?.Year)
.Select(g => new SchoolSystemOverallAveragePerYearVm
{
Year = g.Key.ToString(),
AverageObtainedMarks = g.Average(a => a.ObtainedMarks) // and an average ObtainedMarks from objects matching the key
});
var averageYearVms = await tem.ToListAsync();
return averageYearVms;
}
我删除了未使用的代码,并按单个值而不是匿名类型分组。
这将为您提供以下 JSON:
[
{
"averageObtainedMarks": 90,
"year": "2019"
},
{
"averageObtainedMarks": 30,
"year": "2020"
}
]
推荐阅读
- angular - 异步 API 调用 Angular
- java - springboot 战争适用于嵌入式 tomcat,但不适用于外部 tomcat
- feathersjs - @feathersjs 服务器不允许多个 JWT 身份验证服务?
- javascript - 在透明叠加层中显示文本
- python - 如何使用 python 从 2 个非数字列创建堆积条形图?
- c++ - 尝试编写 .mat 文件时,在 C++ 中的每个构建的完全相同的位置引发异常
- android - Android DeadObjectException 崩溃
- javascript - 反应待办事项列表。addItem 功能不起作用
- sql - SQL:识别列中是否有多个(不重复)
- c# - 新计算机和新的 git clone 给出 500 多个错误,不知道我错过了什么