如何解决Linq to SQL 匹配声明类型和声明值列表
我正在尝试运行一个查询,该查询匹配具有匹配值列表(以及用户名限制)的声明的用户。
使用 vb.NET。
我的声明是:
Dim AllUsers = (From u In Users
From c In u.Claims
Where (u.IsTemplate = False And u.Name.ToLower.Contains(q.ToLower)) _
And (c.ClaimType = CDpermission _
And CDPermissionValues.Contains(c.ClaimValue)) Select u).Distinct.ToList()
CDpermission 是一个字符串,CDPermissionValues 是一个字符串值数组。
该语句似乎完全忽略了带有声明的部分 - 即它只是匹配用户名。
如果我使用特定声明值之一,则语句按预期运行,即:
Dim AllUsers = (From u In Users
From c In u.Claims
Where (u.IsTemplate = False And u.Name.ToLower.Contains(q.ToLower)) _
And (c.ClaimType = CDpermission _
And c.ClaimValue = "INSTIGATE") Select u).Distinct.ToList()
CDPermissionValues 可能包含一个或多个值,因此我需要对照列表进行检查。
感谢收到任何帮助!
解决方法
我认为这会奏效:
Dim AllUsers = (From u In Users
Where Not u.IsTemplate And
u.Name.ToLower.Contains(q.ToLower) And
u.Claims.Any(Function(c) c.ClaimType = CDpermission And
CDPermissionValues.Contains(c.ClaimValue))).ToList()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。