/// <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; } }
/// <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; } }