2013-02-05 48 views
1

我有一個LINQ表達其要求的另一種表達這也要求另一種表達......C#的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:參數「秩序」不綁定在指定的LINQ to Entities查詢表達式中。

此異常來自_convertQuantityProxy .Invoke(order.Product,order.Quantity) 如何將原始參數「order」傳遞給此調用? 請注意,我使用LinqKit/AsExpandable()函數。

謝謝。

+0

你能提供與_ExpressionOfConvertQuantity相關的代碼嗎? – daryal

+0

'公共靜態表達> _ExpressionOfConvertQuantity { 得到 { 表達> convertQuantity = (產品,數量) => ModelEntities.DoubleToDecimal( (ModelEntities.DecimalToDouble(quantity.Value)* Math.Pow(10.0,ModelEntities.DecimalToDouble(product.QuantityDecimals))) ); 返回convertQuantity; } }' – user1756338

+0

@ user1756338:我將您的代碼移至問題所在的位置。它不應該在評論中,只是一個供參考。 –

回答

0

最後我發現,我必須返回
return cv.Expand();