Linq to SQL 匹配声明类型和声明值列表
Linq to SQL matching claim type and list of claim values
我正在尝试 运行 匹配具有与值列表相匹配的声明的用户的查询(以及受用户名限制)。
使用 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 是一个字符串值数组。
该声明似乎完全忽略了声明部分 - 即它只是匹配用户名。
如果我使用其中一个特定的声明值,则声明 运行s 是预期的,即:
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()
我正在尝试 运行 匹配具有与值列表相匹配的声明的用户的查询(以及受用户名限制)。
使用 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 是一个字符串值数组。
该声明似乎完全忽略了声明部分 - 即它只是匹配用户名。
如果我使用其中一个特定的声明值,则声明 运行s 是预期的,即:
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()