今天我们有这样一份声明:
var Query = (from dp in db.Patients
select dp);
var UserID = User.Identity.GetUserId();
if (User.IsInRole("Administrator"))
{
Query = Query.Where(x => x.AdministratorID == UserID);
}
if (User.IsInRole("Counselor"))
{
Query = Query.Where(x => x.CounselorID == UserID);
}
if (User.IsInRole("Physician"))
{
Query = Query.Where(x => x.PhysicianID == UserID);
}
问题是我们有用户可以有多个角色。如果一个用户既是顾问又是医生,我们希望系统能够检索出所有CounselorID == UserID或PhsicianID == UserID的患者。
如果我们不知道在加载页面时用户将拥有什么角色,如何动态地完成这个任务?
当前的.Where子句只使用AND语句,我们需要一个OR语句。
理想情况下,解决方案应该像这样:
if (User.IsInRole("Administrator"))
{
Query = Query.Where(x => x.AdministratorID == UserID);
}
if (User.IsInRole("Counselor"))
{
Query = Query.WhereOr(x => x.CounselorID == UserID);
}
if (User.IsInRole("Physician"))
{
Query = Query.WhereOr(x => x.PhysicianID == UserID);
}
CounselorID == UserID
的情况,但没有辅导员角色? - JensB