using System.Linq.Expressions;
using System.Collections;
using System.Collections.Generic;
public static void Main()
Console.WriteLine("****************** C# Equivalent Output **************************\n\n");
Console.WriteLine("First Case");
Console.WriteLine("Second Case");
Console.WriteLine("Third Case");
Console.WriteLine("Default Case");
Console.WriteLine("\n\n***************** Expression Tree Output **************************\n\n");
ConstantExpression switchValue = Expression.Constant(4);
var defaultCase = WriteLineExpression("Default Case");
var case1 = WriteLineExpression("First Case");
var case2 = WriteLineExpression("Second Case");
var case3 = WriteLineExpression("Third Case");
SwitchExpression switchExpr =
Expression.SwitchCase(case1,Expression.Constant(1)),
Expression.SwitchCase(case2,Expression.Constant(2)),
Expression.SwitchCase(case3,Expression.Constant(3))
Expression.Lambda<Action>(switchExpr).Compile()();
public static Expression WriteLineExpression(string s)
return Expression.Call(null,
typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }),