Exemple #1
0
        /// <summary>
        /// System.Collections.IEnumerable 的函数。
        /// </summary>
        /// <param name="node">节点。</param>
        /// <returns></returns>
        protected virtual void VisitSet(MethodCallExpression node)
        {
            switch (node.Method.Name)
            {
            case "Exists":
                VisitSetExists(node);
                break;

            case "TrueForAll":
                goto default;

            case MethodCall.Contains:
                VisitSetContains(node);
                break;

            case "get_Item":
                writer.Parameter(node.GetValueFromExpression());
                break;

            default:
                VisitByCustom(node);
                break;
            }
        }
Exemple #2
0
        /// <summary>
        /// <see cref="Enumerable"/>.
        /// </summary>
        /// <returns></returns>
        protected virtual void VisitLinq(MethodCallExpression node)
        {
            switch (node.Method.Name)
            {
            case MethodCall.Any:
                VisitLinqAny(node);
                break;

            case MethodCall.All:
                goto default;

            case MethodCall.Contains:
                VisitLinqContains(node);
                break;

            case MethodCall.First:
            case MethodCall.FirstOrDefault:
            case MethodCall.Last:
            case MethodCall.LastOrDefault:
            case MethodCall.Single:
            case MethodCall.SingleOrDefault:
            case MethodCall.ElementAt:
            case MethodCall.ElementAtOrDefault:
            case MethodCall.Count:
            case MethodCall.LongCount:
            case MethodCall.Max:
            case MethodCall.Min:
            case MethodCall.Average:
                writer.Parameter(node.GetValueFromExpression());
                break;

            default:
                VisitByCustom(node);
                break;
            }
        }