2013-02-05 3 views
1

내가 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 식을 ... 얻을 수있는 매개 변수 : 매개 변수 '주문'이 아니었다 지정한 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))) ); return convertQuantity; } } – user1756338

+0

@ user1756338 : 코드가 속한 질문으로 이동했습니다. 단지 FYI에 불과합니다. –

답변

0

마침내 내가 돌아 왔음을 발견했다.
return cv.Expand();