Dynamic lamdba expression

		private static readonly int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
		static void Main()
		{
			DynamicLamdbaExpressionSample1();
			DynamicLamdbaExpressionSample2();
		}
		//display numbers that greater than 5
		public static void DynamicLamdbaExpressionSample1()
		{
			//define paramater name
			var parameter = Expression.Parameter(typeof(int), "i");
			//define constant name
			var constant = Expression.Constant(5);
			var body = Expression.GreaterThan(parameter, constant);
			//lambda expression
			var lambda = Expression.Lambda<Func<int, bool>>(body, parameter);
			Console.WriteLine("display numbers that greater than 5");
			numbers.Where(lambda.Compile()).ToList().ForEach(v => Console.WriteLine(v));
		}
		//display numbers that less than 7 and greater than 5
		public static void DynamicLamdbaExpressionSample2()
		{
			Console.WriteLine("display numbers that less than 7 and greater than 5");
			var parameter = Expression.Parameter(typeof(int), "i");
			var constant1 = Expression.Constant(5);
			var constant2 = Expression.Constant(7);
			//greater than 5
			var body1 = Expression.GreaterThan(parameter, constant1);
			//less than 7 
			var body2 = Expression.LessThanOrEqual(parameter, constant2);
			//And Operation
			var body = Expression.And(body1, body2);
			var lambda = Expression.Lambda<Func<int, bool>>(body, parameter);
			numbers.Where(lambda.Compile()).ToList().ForEach(v => Console.WriteLine(v));
		}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章