我似乎对EF / Linq / Navigation的工作方式有很大的误解。
我试图从添加m:n关系的前一个问题中扩展我的示例。
数据库表:
数据库数据: Id为1的人分配给组1和组3。
我的查询按预期返回链接的GroupAssignments:
var result = from person in _dbContext.Person
select new
{
id = person.Id,
firstname = person.Firstname,
lastname = person.Lastname,
groupAssignments = person.GroupAssignment
};
return Ok(result);但是我想要一个包含N个表(组)字段的列表。我想要的结果是
[
{
"id": 1,
"firstname": "First1",
"lastname": "Last1",
"groupAssignments":
[
{
"id": 1,
"name": "test group 1"
},
{
"id": 3,
"name": "test group 3"
}
]
}
]顺便说一句:如果你在评论中发布一些关于EF (核心)和linq的好的阅读链接,我会很高兴的。似乎我有很多初学者的问题。
发布于 2016-10-11 13:55:10
您可能在Group实体中有一个GroupAssigment导航属性。如果是这种情况,请使用Select扩展方法:
var result = from person in _dbContext.Person
select new
{
id = person.Id,
firstname = person.Firstname,
lastname = person.Lastname,
groupAssignments= person.GroupAssignment.Select(ga=>ga.Group)
};
return Ok(result);关于文档,您可以启动这里。
更新
要实现您在下面评论的内容,您可以使用匿名类型只对这两个属性进行项目:
groupAssignments= person.GroupAssignment.Select(ga=>new{id=ga.Group.Id,name=ga.Group.Name}) https://stackoverflow.com/questions/39978842
复制相似问题