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()