1

我有一个 LINQ 表达式,它调用另一个表达式,它也调用另一个表达式......

public static Expression<Func<Models.Order, Models.Product,decimal?>> _ExpressionOfGetCounterValue
{
    get
    {
        var _getAmountProxy = Product._ExpressionOfGetAmount;
        var _convertQuantityProxy = Product._ExpressionOfConvertQuantity;

        Expression<Func<Models.Order, Models.Product, decimal?>> cv =
            (order,product) => (
                _getAmountProxy.Invoke(
                    order.Product,
                    _convertQuantityProxy.Invoke(order.Product,order.Quantity), 
                    order.Product.Price));

        return cv;
    }
}

public static Expression<Func<Models.Product, decimal?, decimal?>> _ExpressionOfConvertQuantity
{
    get
    {
        Expression<Func<Models.Product, decimal?, decimal?>> convertQuantity =
            (product, quantity) => ModelEntities.DoubleToDecimal(
                                       ModelEntities.DecimalToDouble(quantity.Value)
                                     * Math.Pow(10.0, ModelEntities.DecimalToDouble(product.QuantityDecimals))
                                   );

        return convertQuantity;
    }
}

执行此操作时,我收到错误 InvalidOperationException:参数 'order' 未绑定在指定的 LINQ to Entities 查询表达式中。

此异常来自 _convertQuantityProxy .Invoke(order.Product,order.Quantity) 如何将原始参数“order”传递给此调用?请注意,我使用 LinqKit / AsExpandable() 函数。

谢谢你。

4

1 回答 1

0

最后我发现,我必须返回
return cv.Expand();

于 2013-02-08T13:13:37.103 回答