我有三个班级:学生,科目和成绩。
public class Grades
{
[Key]
public int Id { get; set; }
public Student Student { get; set; }
public Subject Subject { get; set; }
public int Year { get; set; }
public string Grade { get; set; }
}
学生班
public class Student
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string Nationality { get; set; }
}
主题类
public class Subject
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
}
我想要返回所有成绩但是扩展了学生和主题的属性,比如 我可以访问 的 Grade.Name
Grade.Gender
Grade.Nationality
Grade.Year
Grade.Grade
而不是 的 Grade.Student.NameGrade.Student.Gender
Grade.Student.Nationality
答案 0 :(得分:1)
使用这些表达式来扩展您的数据。请注意,它们不属于Grade类,但它们将是具有所需属性的匿名类。如果需要将这些项传递给其他方法,则必须创建具有这些属性的显式类。否则,您可以使用相同的方法直接访问它们。比如,expandedGrades.First().Name
。
var expandedGrades =
DBContext.Grades.Select(grade =>
new
{
Name = grade.Student.Name,
Gender = grade.Student.Gender,
Nationality = grade.Student.Nationality,
Year = grade.Year,
Grade = grade.Grade
});
或
var expandedGrades =
from grade in DBContext.Grades
select new
{
Name = grade.Student.Name,
Gender = grade.Student.Gender,
Nationality = grade.Student.Nationality,
Year = grade.Year,
Grade = grade.Grade
};
答案 1 :(得分:0)
假设您在学生,科目和成绩表之间设置了适当的关系。在实体框架中,您可以使用 .include 来完成工作。
一个基本的例子:
Blog blogs = context.Blogs
.Include(b => b.Posts)
.ToList();
现在可以直接使用blogs.Posts
。