使用linqkit时出现异常:无法将类型为TypedParameterExpression的对象强制转换为类型LambdaExpression

时间:2016-09-08 03:52:13

标签: c# linq generics exception linqkit

我第一次没能找到问题的现有答案。

基本上我有一个通用表达式,允许在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未能找到对此异常的任何引用。我不确定我所做的事情是否可能......任何帮助都会非常感激!

0 个答案:

没有答案