我的数据库表结构是
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;
}
答案 0 :(得分:4)
我相信你在寻找:
return claimsRepository.FindAll().Any(user => user.User == user &&
user.ClaimType == type &&
user.ClaimValue == value);