示例#1
0
        public void ExpressionSameString(string sameString)
        {
            Expression <Func <ParentOne, string, bool> > exp = (p, str) => p.SameSame == sameString;

            var parentParam = Expression.Parameter(typeof(ParentOne), "p");
            var stringParm  = Expression.Parameter(typeof(string), "str");
            var parentSame  = Expression.Property(parentParam, "SameSame");
            var body        = Expression.Equal(parentSame, stringParm);

            var completeExpression = Expression.Lambda <Func <ParentOne, string, bool> >(body, new[] { parentParam, stringParm });
            var compiledExpression = completeExpression.Compile();
            var p = new ParentOne
            {
                Year     = 99,
                SameSame = "Dicky"
            };

            Console.WriteLine(compiledExpression(p, sameString));
        }
        public static void Do()
        {
            GrandParent rpt = new GrandParent {
                Name = "report1", Description = "This is simply a report"
            };

            ParentOne stcln1 = new ParentOne {
                Columns = "asdf", Alias = "just a column"
            };
            ParentOne stcln2 = new ParentOne {
                Columns = "asdf", Alias = "just a column"
            };

            rpt.ParentList = new List <ParentOne>();
            rpt.AddSelectedColumns(stcln1);
            rpt.AddSelectedColumns(stcln2);

            ChildOne c1 = new ChildOne();

            c1.Name = "Ram";

            stcln1.AddSelectedColumns(c1);
            Helper.Create(rpt);

            Helper.Select();

            //f.Create<Report>(rpt);


            ///Delete many elements in one-to-may relationship

            //var obj1 = f.GetSelectedColumnsById(1);
            //Collection<SelectedColumn> selectedcolumns = new Collection<SelectedColumn>();

            //foreach(object[] item in obj1)
            //{
            //    selectedcolumns.Add(new SelectedColumn {ParentId=(int) item[0],Columns = (string) item[1], Alias = (string) item[2], SortType = (string) item[3], SortOrder = (string) item[4], GrandParentId = (int) item[5]   });
            //}

            //f.Delete<SelectedColumn>(selectedcolumns);
        }
示例#3
0
        public void CombineExpression(int year, string sameString)
        {
            Expression <Func <ParentOne, string, int, bool> > exp = (p, str, i) => p.SameSame == str && p.Year < i;

            // Parameters =
            var parentParam = Expression.Parameter(typeof(ParentOne), "p");
            var strParam    = Expression.Parameter(typeof(string), "str");
            var intParam    = Expression.Parameter(typeof(int), "yr");

            // parernt  members/Properties/Fields required.
            var sameSame = Expression.Property(parentParam, typeof(ParentOne).GetProperty("SameSame"));

            // On the Parent.SameSame, call ToString() no paramters neeeded
            var lowerSame = Expression.Call(sameSame, "ToLower", null);

            var yearP = Expression.Property(parentParam, "Year");

            var left  = Expression.Equal(lowerSame, strParam);
            var right = Expression.LessThanOrEqual(yearP, intParam);
            // The body of the Func
            var finalBody = Expression.And(left, right);
            // the form of the Expression, With a func
            var complete = Expression.Lambda <Func <ParentOne, string, int, bool> >(finalBody, new[] { parentParam, strParam, intParam });

            var lv = Expression.Lambda <Func <ParentOne, string, int, bool> >(
                Expression.And(
                    Expression.Equal(Expression.Call(Expression.Property(parentParam, "SameSame"), "ToLower", null), strParam),
                    Expression.LessThanOrEqual(Expression.Property(parentParam, "Year"), yearP)
                    ), new[] { parentParam, strParam, Expression.Parameter(typeof(int), "Yr") });

            Console.WriteLine(lv);
            //Console.WriteLine(complete);
            var aveit = lv.Compile();
            var p     = new ParentOne
            {
                Year     = 1000,
                SameSame = "Jelly"
            };

            Console.WriteLine(aveit(p, sameString, year));
        }
示例#4
0
        public void ExpressionYear(int year)
        {
            Expression <Func <ParentOne, int, bool> > d = (p, i) => p.Year >= i;

            var parent     = Expression.Parameter(typeof(ParentOne), "p");
            var yearVal    = Expression.Parameter(typeof(int), "yr");
            var parentYear = Expression.Property(parent, "Year");
            //var yearConstant = Expression.Constant(100, typeof(int));

            BinaryExpression body = Expression.GreaterThanOrEqual(parentYear, yearVal);

            var completeExpression = Expression.Lambda(body, new[] { yearVal, parent });

            var x = completeExpression.Compile();
            var p = new ParentOne
            {
                Year = 99
            };

            Console.WriteLine(x.DynamicInvoke(year, p));
            Console.WriteLine(completeExpression);
            Console.WriteLine(completeExpression.Body);
            Console.WriteLine(completeExpression.Parameters[0]);
        }
 public virtual void AddSelectedColumns(ParentOne parent)
 {
     parent.GrandParent = this;
     ParentList.Add(parent);
 }