有人能帮我翻译LINQ查询语法方法语法吗?



我一直在试图找出如何将以下LINQ查询语法转换为方法语法,但我只是不明白:

from exa in _context.Exams
from stu in exa.Class.Students
where exa.Id == 1
select new StudentFullName
{
Id = stu.Id,
FullName = stu.Person.FirstName + " " + stu.Person.LastName
}

Classes中的属性ICollection<Student> StudentsStudents的多对多关系引起了我的困惑。

我试过了:

_context.Exams
.Where(exa => exa.Id == id)
.Select(exa => new StudentFullName
{
Id = exa.Class.Students.Select(stu => stu.Id),
FullNamee = exa.Class.Students.Select(stu => stu.Person.FirstName + " " + stu.Person.LastName)
}).ToList();

但是我不能创建类StudentFullName,因为查询返回IEnumerable<int>而不是每个属性的int

这就是我得到的:https://i.stack.imgur.com/7fcxx.jpg

这就是我应该得到的:https://i.stack.imgur.com/oy0hT.jpg

编辑:从tymtam调整解决方案,它工作

_context.Exams
.Where(exa => exa.Id == id)
.SelectMany(exa => exa.Class.Students
.Select(stu => new StudentFullNameViewModel
{
Id = stu.Id,
FullName = stu.Person.FirstName + " " + stu.Person.LastName
})
).ToList()

很可疑

  1. 学生和考试之间没有连接
  2. exa未用于结果对象

我认为1对1的翻译是:

var students2 = exams
.Where(exa => exa.Id == id)
.SelectMany(exa => exa.Class.Students
.Select(stu => new StudentFullName
{
Id = stu.Id,
FullNamee = stu.Person.FirstName + " " + stu.Person.LastName
}))
.ToList();

相关内容

  • 没有找到相关文章

最新更新