我有2个表ProfileType(profilename),Role(roldId,minSecurityLevel),并且这两个表之间的关系为roleProfiles(roleid,profilename,securityLevel)

我想为特定角色选择所有profileType和该ProfileType的安全级别。

如果roleProfile不包含profiletype的条目,则将显示null。

谁能仅使用lambda表达式来帮助我进行linq查询?

我正在使用存储库模式

        var roleprofiles =  Repository.Query<Model.RoleProfile>()
            .Select(
                r =>
                new RoleProfileModel
                {
                    SecurityLevel = r.SecurityLevel,
                    ProfileCode = r.ProfileType.Code
                })
            .ToArray();


我想要在profileTypes上左联接的结果

最佳答案

var details= (from p in repository.Query<Model.ProfileType>()
             join r in repository.Query<Model.RoleProfile>() on p.Id equals r.ProfileTypeId into g
             from x in g.DefaultIfEmpty()
             select new RoleProfileModel{
                    ProfileType=p.Name,
                    SecurityLevel=x==null?string.Empty:x.SecurityLevel,
                    ProfileCode=x==null?string.Empty:x.Code,
}).ToArray();


希望对你有帮助

08-28 07:03