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'は、指定されたLINQtoEntitiesクエリ式にバインドされていません。

この例外は_convertQuantityProxy.Invoke(order.Product、order.Quantity)から発生します。元のパラメーター「order」をこの呼び出しに渡すにはどうすればよいですか?LinqKit / AsExpandable()関数を使用していることに注意してください。

ありがとうございました。

4

1 に答える 1

0


最後に、 return cv.Expand();を返す必要があることがわかりました。

于 2013-02-08T13:13:37.103 に答える