首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectMany应用于3个列表

SelectMany应用于3个列表
EN

Stack Overflow用户
提问于 2017-03-21 14:50:09
回答 2查看 1K关注 0票数 4

我需要创建一个对象列表,OrganizationEnrolment,使用3个实体框架实体(用户、EnrolmentType和OrganizationEnrolment)创建:

代码语言:javascript
复制
List<OrganizationEnrolment> organizationEnrolments = 
  context.Organizations
  .SelectMany(x => context.Users)
  .SelectMany(x => context.EnrolmentTypes)
  .Select(y => new OrganizationEnrolment {
     EnrolmentType = enrolmentType
     Organization = organization,
     User = user
   })

我的问题是在有了SelectMany之后,如何从3个连接表中获取enrolmentType、组织和用户?请注意,以下代码:

代码语言:javascript
复制
EnrolmentType = enrolmentType,
Organization = organization,
User = user

因为我没有变量enrolmentType、组织和用户,所以无法工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-21 14:55:21

可以使用查询语法获取所有这些变量:

代码语言:javascript
复制
from o in context.Organizations
from u in context.Users
from et in context.EnrolmentTypes
select new OrganizationEnrolment {
     EnrolmentType = et
     Organization = o,
     User = u
   }

每个局部变量将在select语句中可见。

Lambda语法(用EF6检查):

代码语言:javascript
复制
context.Organizations.SelectMany(
          o => context.Users.SelectMany(
              u => context.EnrolmentTypes.Select(
                  et => new OrganizationEnrolment {
                       EnrolmentType = et
                       Organization = o,
                       User = u
                  })
              )
         )
票数 1
EN

Stack Overflow用户

发布于 2017-03-21 14:55:34

这就是你要找的吗?

代码语言:javascript
复制
var query= from o in context.Organizations
           from u in context.Users
           from t incontext.EnrolmentTypes
           select new OrganizationEnrolment {
                      EnrolmentType = t,
                      Organization = o,
                      User = u
                   };

使用方法语法将是:

代码语言:javascript
复制
var query= context.Organizations.SelectMany(o=>context.EnrolmentTypes
                                .SelectMany(t=>context.Users
                                .Select(u=>new OrganizationEnrolment {
                                                   EnrolmentType = t,
                                                   Organization = o,
                                                    User = u
                                                  })));
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42930508

复制
相关文章

相似问题

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