我有三个表Users,UserRoles,Roles。
我正在使用LINQ to ENTITY Framework来查询它们。
现在我想要一个函数来检查loggin用户是否具有'FFFAdmin'角色,所以我将loggin用户的UserId传递给这个函数并在函数中执行以下操作。
public bool isUserFFFAdmin(string UserId){
return (from u in Db.Users
join ur in Db.UserRoles on u.UserID equals ur.UserID
join r in Db.Roles on ur.RoleID equals r.RoleID
where r.RoleName == "FFFAdmin"
&& u.UserID.Equals(UserId)
select '1').Any();
}
现在问题是这个查询是不区分大小写的,所以如果我有两个用户说
1.'Ram',角色为'siteUser' 2.'ram',角色为'FFFAdmin'
现在当我传递'Ram'时,此函数应返回false但由于此查询的不区分大小写的行为,它返回true。
注意*我无法更改数据库的排序规则类型以使查询案例敏感。请帮助我是实体和LInq的新手。
答案 0 :(得分:1)
将任务分为两部分
var users = from u in Db.Users
join ur in Db.UserRoles on u.UserID equals ur.UserID
join r in Db.Roles on ur.RoleID equals r.RoleID
where r.RoleName == "FFFAdmin"
&& u.UserID == UserId
select u.UserID;
return users.AsEnumerable().Any(s => s == UserId);
通过AsEnumerable()
,第二部分在区分大小写的C#环境中完成,而主过滤任务仍然是数据库作业。