3

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

基本上我有一个通用表达式来允许过滤 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);
    }

我已经简化了返回线以突出问题。它一直有效,直到我尝试使用这两个函数中的任何一个,在本例中为“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’类型。”

现在我从来没有以这种方式传递一个函数并在表达式中使用它,我的 google-fu 也没有找到对这个异常的任何引用。我不确定我正在做的事情是否可能......任何帮助将不胜感激!

4

0 回答 0