考虑将在 MVC 控制器中使用的这个查询:
return
from student in Students
where //..
select student;
结果将转换为 JSON,如:
[
{firstName: "John", lastName="Smith"},
...
]
我想要一个查询来包括这样的课程计数:
[
{firstName: "John", lastName="Smith", courseCount: "4"},
...
]
第一个解决方案是使用匿名对象创建查询,如下所示:
return
from student in Students
join course in Customers on course.StudentId equals student.Id
where //..
group by //...
select new {student.FirstName, student.LastName, CourseCount = courseGroup.Count()};
但是这样我就失去了学生的整个对象。例如,如果我Age
稍后向学生添加属性,我应该更新此查询并添加student.Age
到选择部分。但在第一个解决方案中,结果会自动包含该字段。
我正在寻找一个更强大的解决方案来执行此选择,因此对Student
类的所有更改都会自动传播到结果。
解决方法: 这将是一个解决方案,但它会更改 JSON 格式并且听起来有点棘手。我正在寻找更好的解决方案。(也许是动态对象!)
select new { Student = student, CourseCount = courseGroup.Count()};
编辑: 所需的解决方案是这样的:
select new Student(student){CourseCount = courseGroup.Count()}
以动态方式添加 CourseCount!