gpt4 book ai didi

linq-to-entities - 需要解决不区分大小写的 Linq to Entity Framework 查询

转载 作者:行者123 更新时间:2023-12-02 03:49:44 25 4
gpt4 key购买 nike

我有三个表 Users、UserRoles、Roles。

  • Usres 表的列是 UserId(Pk varchar(20)), CashCenterId(Int)
  • UserRoles 的列是 UserRoleID(pk Int), UserId(Fk to user table),RoleID(Fk to role Table)
  • 角色的列是 RoleId(Pk int), RoleName(varchar(30))

我正在使用 LINQ to ENTITY Framework 来查询它们。

现在我想要一个函数来检查登录用户是否具有“FFFAdmin”角色,因此我将登录用户的 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. 角色为“FFFAdmin”的“ram”

现在,当我传递“Ram”时,此函数应返回 false,但由于此查询的不区分大小写行为,它返回 true。

注意* 我无法更改数据库的排序规则类型以使查询区分大小写。请帮助我是实体和 LInq 的新手。

最佳答案

将任务分成两部分

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# 环境中完成,而主要的过滤任务仍然是数据库作业。

关于linq-to-entities - 需要解决不区分大小写的 Linq to Entity Framework 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com