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 を追加します。