コード例 #1
0
        private static MethodCallExpression NormalizePredicateArgument(
            MethodCallExpression callExpression)
        {
            int                  argumentOrdinal;
            Expression           normalized;
            MethodCallExpression methodCallExpression;

            if (LinqExpressionNormalizer.HasPredicateArgument(callExpression, out argumentOrdinal) && LinqExpressionNormalizer.TryMatchCoalescePattern(callExpression.Arguments[argumentOrdinal], out normalized))
            {
                methodCallExpression = Expression.Call(callExpression.Object, callExpression.Method, (IEnumerable <Expression>) new List <Expression>((IEnumerable <Expression>)callExpression.Arguments)
                {
                    [argumentOrdinal] = normalized
                });
            }
            else
            {
                methodCallExpression = callExpression;
            }
            return(methodCallExpression);
        }