我第一次没能找到问题的现有答案。
基本上我有一个通用表达式,允许在IQueryable用法上过滤活动项:
queryableGoesHere.ActiveAtItems(x => x.StartDate, x => x.EndDate, asAtDate, true)
表达式的实现:
public static Expression<Func<T, Func<T, DateTime>, Func<T, DateTime?>, DateTime?, bool?, bool>> GetActiveAtItemsExprGeneric<T>()
where T : class
{
return (o, from, to, givenTime, isActive) => (!to(o).HasValue);
}
我简化了返回行以突出显示问题。它是有效的,直到我尝试使用两个func中的任何一个,在这种情况下'to(o)'。
在这里使用linqkit时失败了:
return (from m in source.AsExpandable()
where predicate.Invoke(m, arg1, arg2, arg3, arg4)
select m);
除了 “附加信息:无法将'System.Linq.Expressions.TypedParameterExpression'类型的对象强制转换为'System.Linq.Expressions.LambdaExpression'。”
现在我从未通过func并以这种方式在表达式中使用它,而我的google-fu未能找到对此异常的任何引用。我不确定我所做的事情是否可能......任何帮助都会非常感激!