C#Linq - 嵌套表达式参数

时间:2013-02-05 12:46:56

标签: c# linq

我有一个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()函数。

谢谢。

1 个答案:

答案 0 :(得分:0)

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