我有一个谓词生成器,它工作正常
var filter = sortKeys.Aggregate(filter, (currentFilter, sortkey) => currentFilter.Or(
x => x.Appointments.Any(y => y.RowStatus == Constants.CurrentRowStatus )));
我现在正在尝试将约会中的条件拆分为另一个谓词构建器,以便我可以随时添加条件并重用该函数。
我曾尝试创建一个表达式,然后在主谓词构建器中使用它,但它失败了
private static Expression<Func<Appointment, bool>> TmpApt(string status)
{
var predicate = PredicateBuilder.False<Appointment>();
predicate = predicate.Or(p => p.RowStatus == status);
return predicate;
}
更改了主要谓词以使用上述表达式
var filter = sortKeys.Aggregate(PredicateBuilder.True<Person>(), (current, s) =>
current.Or(x => x.Appointments.Any(TmpApt(s))));
它显示一个错误
参数类型“
System.Linq.Expressions.Expression<System.Func<Appointment,bool>>
”不可分配给参数类型System.Func<Appointment,bool>
我什至尝试过像 Expand 这样的 LinqKit 扩展方法,但可以找到解决方案。
也曾在 LINQ 中尝试过Reusable 谓词表达式,然后它在编译时没有显示任何错误,但是在应用程序端,它显示
用于查询运算符 '
Any
' 的重载不受支持。
谁能帮我解决错误或提出替代解决方案。