using System.Data.DataSetExtensions;
using System.Globalization;
using System.Diagnostics;
using System.Linq.Expressions;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Forms;
public static void Main()
var s2 = CreatePolynomialSequence (new[] { 1d, 2, 3 });
Console.WriteLine(s2(5));
public static Func<int, double> CreatePolynomialSequence (params double[] coeff)
var y = Expression.Variable(typeof(double), "y");
var res = Expression.Variable(typeof(double), "res");
var expr = Expression.Assign(res, Expression.Constant(coeff[0]));
for (int i = 1; i < coeff.Length; i++)
Expression.Multiply(expr, y),
Expression.Constant(coeff[i])
var x = Expression.Variable(typeof(int), "x");
var block = Expression.Block
new ParameterExpression[]{ y, res },
Expression.Assign(y, Expression.Convert(x, typeof(double))),
return Expression.Lambda<Func<int, double>>(block, x).Compile();