首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityFramework核选择M:N相关数据

EntityFramework核选择M:N相关数据
EN

Stack Overflow用户
提问于 2016-10-11 13:50:26
回答 1查看 887关注 0票数 1

我似乎对EF / Linq / Navigation的工作方式有很大的误解。

我试图从添加m:n关系的前一个问题中扩展我的示例。

数据库表:

  1. Person {Id (in),Firstname (nvarchar),Lastname (nvarchar) }
  2. 组{Id (int),Name (string) }
  3. GroupAssignment {Id (int)、PersonId (int)、GroupId (int) }

数据库数据: Id为1的人分配给组1和组3。

我的查询按预期返回链接的GroupAssignments:

代码语言:javascript
复制
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个表(组)字段的列表。我想要的结果是

代码语言:javascript
复制
[
{
    "id": 1,
    "firstname": "First1",
    "lastname": "Last1",
    "groupAssignments": 
    [
         {
         "id": 1,
         "name": "test group 1"
         },
         {
         "id": 3,
         "name": "test group 3"
        }
    ]
}
]

顺便说一句:如果你在评论中发布一些关于EF (核心)和linq的好的阅读链接,我会很高兴的。似乎我有很多初学者的问题。

EN

Stack Overflow用户

回答已采纳

发布于 2016-10-11 13:55:10

您可能在Group实体中有一个GroupAssigment导航属性。如果是这种情况,请使用Select扩展方法:

代码语言:javascript
复制
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);

关于文档,您可以启动这里

更新

要实现您在下面评论的内容,您可以使用匿名类型只对这两个属性进行项目:

代码语言:javascript
复制
groupAssignments= person.GroupAssignment.Select(ga=>new{id=ga.Group.Id,name=ga.Group.Name}) 
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39978842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档