SelectMany applied to 3 lists

旧巷老猫 提交于 2019-12-10 17:18:24

问题


I need to create a list of objects, OrganizationEnrolment, created using 3 Entity Framework entities (User, EnrolmentType and OrganizationEnrolment):

List<OrganizationEnrolment> organizationEnrolments = 
  context.Organizations
  .SelectMany(x => context.Users)
  .SelectMany(x => context.EnrolmentTypes)
  .Select(y => new OrganizationEnrolment {
     EnrolmentType = enrolmentType
     Organization = organization,
     User = user
   })

My problem is after having the SelectMany how to get the enrolmentType, organization and user from the 3 joined table? Note that the following code:

EnrolmentType = enrolmentType,
Organization = organization,
User = user

is not working because I do not have the variables enrolmentType, organization and user.


回答1:


You can use query syntax to get all those variables:

from o in context.Organizations
from u in context.Users
from et in context.EnrolmentTypes
select new OrganizationEnrolment {
     EnrolmentType = et
     Organization = o,
     User = u
   }

Each local range variable will be visible in select statement.

Lambda syntax (checked with EF6):

context.Organizations.SelectMany(
          o => context.Users.SelectMany(
              u => context.EnrolmentTypes.Select(
                  et => new OrganizationEnrolment {
                       EnrolmentType = et
                       Organization = o,
                       User = u
                  })
              )
         )



回答2:


Is this what you are looking for?

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
                   };

Using method syntax would be:

var query= context.Organizations.SelectMany(o=>context.EnrolmentTypes
                                .SelectMany(t=>context.Users
                                .Select(u=>new OrganizationEnrolment {
                                                   EnrolmentType = t,
                                                   Organization = o,
                                                    User = u
                                                  })));


来源:https://stackoverflow.com/questions/42930508/selectmany-applied-to-3-lists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!