我想通过构造嵌套的json对象来使用WEB API。
我有两个实体Class AND Student
我希望JSON输出看起来像这个结构
[
{
"ClassId": 1,
"ClassName": "Class A",
"Students": [
{
"StudentId": 1,
"StudentName": "student 1"
},
{
"StudentId": 2,
"StudentName": "student 2"
}
]
},
{
"ClassId": 2,
"ClassName": "Class B",
"Students": [
{
"StudentId": 3,
"StudentName": "student 3"
},
{
"StudentId": 4,
"StudentName": "student 4"
}
]
}
]
当我试图操纵类数据中的学生数据时,我遇到了问题。
我正在尝试此代码,但它给了我一个错误。
public IQueryable<tbl_mosque> Gettbl_mosque()
{
var Classes = db
.Class
.Include("Students")
.Select(t => new Class
{
id = t.Id,
name = t.Name,
student = t.students.Select(p => new student
{
Id = p.id,
Name = p.Name
})
}).ToList();
return Classes;
}
答案 0 :(得分:1)
你只需要
return db.Class.Include("Students").ToList();
Include
表示引擎应包含Students
的实现。
P.S。你应该提到你的问题中的错误和堆栈跟踪。
<强>更新强>
如果相关(在域语义)表中没有关系,您可以使用JOIN。 由于你有一对多的关系,这可以提供帮助:
var classes = db.Classes.GroupJoin(db.Students, c => c.Id, s => s.ClassID,
(c, s) => new {Class = c, Students = s});
此处classes
是匿名类型的对象列表,其中包含Class
对象并与他Students
相关。
答案 1 :(得分:1)
我现在无法测试,但您可以像以下一样加入他们:
var joined = classesList.Join(studentsList,
_class => _class.Id, _student => _student.ClassId,
(_class, _student) => new Class
{
id = _class.Id,
name = _class.Name,
student = new student
{
Id = _student.id,
Name = _student.Name
})
});