我有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();
希望对你有帮助