如果users.Claims包含等于参数的声明(LINQ),则为linq语句

时间:2014-05-16 13:04:01

标签: c# .net linq

我的数据库表结构是

ClaimsTable
Id (int) UserId (FK) ClaimType (string) ClaimValue (string)
1        1           Role               Administrator

我没有跟踪用户方面的声明,所以当我需要用户声称我手动加载时。

现在我有简单的linq问题,但我无法从这里看出来 我正在加载用户声明,我想检查该声明是否与作为参数传递的声明匹配

public bool HasClaim(User user, string type, string value)
{         
     var claimsRepository = ... claimsrepository init ....

     var userClaims = claimsRepository.FindAll().Where(usr => usr.User == user).ToList();

     if (userClaims.Count() > 0)
     {
         // linq statement to select those claims which has type and value 
         // equal to method parameters

         bool containsClaim = ?????
         if (containsClaim == true)
             return true;
     }
     return false;
}

1 个答案:

答案 0 :(得分:4)

我相信你在寻找:

return claimsRepository.FindAll().Any(user => user.User == user &&
                                       user.ClaimType == type &&
                                       user.ClaimValue == value);