我对 Expressions 仍然有点陌生,并且很难解决这个问题。这可能更像是 EF 上的 Lambda 表达式问题,但我希望有人能至少指出我正确的方向:
我正在尝试执行以下操作:
internal static IQueryable<TSource> WithSecurity<TSource>(thisIQueryable<TSource> source, Expression<Func<Security.Access, TSource, bool>> predicate, params MyRoles[] roles)
{
DL.MyContext ctx = Csla.Data.DbContextManager<DL.MyContext>.GetManager().DbContext;
var accessData = ctx.Access.Where(e => roles.Contains((MyRoles)e.Role_ID));
Expression x = predicate asLambdaExpression;
source =
from c in source
where accessData.Any(predicate)
select c;
return source;
}
在 where 子句中,显然存在一个问题,因为谓词是 type Expression<Func<Security.Access, TSource, bool>>
,但 Any 是 expecting Expression<Func<Security.Access, bool>>
。任何有关如何转换的帮助将不胜感激。