asp.net-core - AspNet Core 在表格中将多条记录显示为一行多列
问题描述
我在使用表格视图时遇到问题。
我希望我的桌子看起来像这样
Name | Test1 | Test2 | Test3
================================
Anna | 70 | 51 | 90
================================
Jack | 56 | 77 | 82
================================
我现在有
Name | Grade | Test |
================================
Anna | 70 | Test1 |
================================
Anna | 51 | Test2 |
================================
Anna | 90 | Test3 |
================================
Jack | 56 | Test1 |
================================
Jack | 77 | Test2 |
================================
Jack | 82 | Test3 |
================================
测试的数量是动态的。有没有办法做到这一点?找不到任何东西。我应该创建另一个模型吗?或者可以通过编辑视图来解决?
模型
public class StudentsWork
{
[Key]
public int IdStudentsWork { get; set; }
public int? Grade { get; set; }
public DateTime? Date { get; set; }
public int Student_id { get; set; }
public int Course_id { get; set; }
public int Test_id { get; set; }
[ForeignKey("Student_id")]
public Student StudentId { get; set; }
[ForeignKey("Course_id")]
public Course CourseId { get; set; }
[ForeignKey("Test_id")]
public Test TestId { get; set; }
}
控制器
public async Task<IActionResult> Group(int? id,int id_group)
{
var group = await _context.StudentsWork
.Include(p => p.StudentId)
.ThenInclude(p => p.GroupId)
.Include(p => p.CourseId)
.Include(p => p.TestId)
.Where(c => c.Course_id == id && c.StudentId.Group_id == id_group)
.ToListAsync();
return View(group);
}
任何帮助将不胜感激。
解决方案
您可以分组StudentId
并为每个组选择一个字典以获取测试名称和等级:
var query = db.StudentsWork.Include(p => p.StudentId)
.Include(p => p.CourseId)
.Include(p => p.TestId)
.GroupBy(c => c.StudentId)
.Select(g => new
{
StudentName=g.Key.Name,
TestGrade = g.ToDictionary(t => t.TestId.Name, t => t.Grade)
});
var result = query.ToList();
推荐阅读
- wordpress - 我可以通过 Wordpress API 获取 Wordpress 插件数据吗?
- kubernetes - 如何更改在一个端口号上运行的服务,现在我想在同一个旧端口号上运行另一项服务
- html - 如何使用我从 css 文件中导入的字体
- python-3.x - 如何使用starts_with jmespath.search 字典键
- python - 如何评估 Jupyter Notebook 中的分数(代入变量值)?
- javascript - Chrome DevTools:如何从 Sources 选项卡或 Watch 窗格中将 JSON 对象复制为文本
- spring-boot - Spring Boot 安全性在响应标头 cookie 中添加 2 个 XSRF-TOKEN
- php - PHP Laravel PDOException 一般错误引用列和外键约束中的引用列不兼容
- python - 这个函数在我的代码中扮演什么角色?
- ios - 多个故事板是让我的图形密集型应用在所有 iPhone 上看起来都不错的唯一方法吗?