首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡在linq查询的一部分上

卡在linq查询的一部分上
EN

Stack Overflow用户
提问于 2014-12-11 21:40:49
回答 2查看 164关注 0票数 0

我有一个与自动完成一起使用的linq查询,它传递一个与电子邮件或用户名相匹配的术语,后者从我的数据库返回用户详细信息(UserDetails)。

代码语言:javascript
运行
复制
var details = db.AspNetUsers
            .Join(db.UserDetails, 
              anu => anu.Id, ud => ud.Id, (anu, ud) => new { anu, ud })
            .Where(@t => @t.anu.Email.Contains(term) 
               || (@t.ud.firstname + @t.ud.lastname).Contains(term))
            .OrderBy(@t => @t.ud.lastname)
            .ThenBy(@t => @t.ud.firstname)
            .ThenBy(@t => @t.anu.Email)
            .Select(@t => new MemberDetails
            {
              FirstName = @t.ud.firstname,
              LastName = @t.ud.lastname,
              Email = @t.anu.Email,
              Phone = @t.ud.phone,
              Postcode = @t.ud.postcode,
              MemberNumber = @t.ud.membershipNumber,
              Street = @t.ud.street,
              City = @t.ud.city,
            }).ToList();

我所缺少的是,假设我是登录用户,我创建了一个名为UserRoleAdmins的表,其中包含2列

代码语言:javascript
运行
复制
 - RoleId nvarchar(128)
 - UserId nvarchar(128)

RoleId是FK to AspNetRoles表,UserId是AspNetRoles表的FK。

所以让我们假设我们有三个角色,红队,蓝队,绿队,我是红队和绿队的管理员,所以UserRolesAdmin表中的2条记录包含红队id和我的用户id,绿队id和我的用户id。

我想确保我返回的用户要么属于红队,要么属于绿队。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-11 21:51:05

在您的第一个where之后附加这个

代码语言:javascript
运行
复制
.Where(x => 
   db.UserRoleAdmins.Any(y => 
       x.ud.UserId == y.UserId && (y.RoleId == "red team" || y.RoleId == "green team")
票数 0
EN

Stack Overflow用户

发布于 2014-12-14 09:12:52

感谢马格努斯让我走上正确的方向,这才是有效的,增加了一个额外的位置。

代码语言:javascript
运行
复制
.Where(x => db.UserRoleAdmins.Any(
  y => y.Id == userId && 
  x.anu.AspNetRoles.Select(v=>v.Id).ToList().Contains(y.RoleId)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27432901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档