lambda表达式

            #region
            //一个SQL TO LINQ 的CONTEXT对像
            MYDCSDataContext myContext = new MYDCSDataContext();
            //正常的LINQ语法,找出部门ID为1的部门信息
            var dept = (from d in myContext.Departments where d.DepartmentId == 1 select d).First();
            //定义一个泛型委托(输入一个参数--Employee,返回bool),给他的是一个Lambda表达式(其实就是一个匿名方法)
            //=>左边是方法的输入参数,右边是方法的返回值
            Func<Employee, bool> fdelegate = p => p.EmployeeId == 1;
            //这里可以看到ORM的好处之一:员工和部门之间建立关系后,通过部门可以直接取到该部门下所有员工
            var emps = dept.Employees;
            //根据上面的泛型委托来找出符合条件的员工
            var emp = emps.First(fdelegate);
            #endregion  
       
            #region
            var nimingtype = dept.Employees.Where(p => p.EmployeeId == 1).Select(p => new     {p.EmployeeId,p.EmployeeNO,p.EmployeeName});
            var istrue = dept.Employees.Select(p => p.EmployeeId == 2);
            #endregion

 

            #region
            Expression<Func<int, bool>> exprTree = num => num < 5;
            ParameterExpression param = (ParameterExpression)exprTree.Parameters[0];
            BinaryExpression operation = (BinaryExpression)exprTree.Body;
            ParameterExpression left = (ParameterExpression)operation.Left;
            ConstantExpression right = (ConstantExpression)operation.Right;
            Console.WriteLine("Decomposed expression: {0} => {1} {2} {3}",
                              param.Name, left.Name, operation.NodeType, right.Value);
            #endregion

 

            var actionAssembly = System.Reflection.Assembly.GetExecutingAssembly();
            var MyClass = actionAssembly.GetType("MyClass");
            var newexpression = System.Linq.Expressions.Expression.New(MyClass);
            LambdaExpression.Lambda(newexpression).Compile();
            //Activator.CreateInstance(MyClass);

 

            #region

            //这里主要体现Func委托与Action委托的区别

            //其中Func参数数量在0-5之间,必须要有一个返回值,Action参数个数同Func,但它可以没有返回值
            Func<int, int, int> myexprx = (int i, int j) =>
            {
                i++;
                return (i + j);
            };   
            Func<bool> myexpr = () => 3 < 4;
            Action newaction = () => Console.Write("这里是ACTION的定义");
            newaction();
            Action xx = () => new contact().prinf();
            #endregion

 

            #region
            var parameteri = Expression.Parameter(typeof(int), "i");
            var parameterj = Expression.Parameter(typeof(int), "j");
            var expressionBir = Expression.Subtract(parameteri, parameterj);
            var expr = Expression.Lambda<Func<int, int, int>>(expressionBir, parameteri, parameterj);
            var mydelegate = expr.Compile();
            var result = mydelegate(5, 6);
            #endregion    
     
            #region
            LambdaExpression.Parameter(typeof(int), "x");
            LambdaExpression.Parameter(typeof(int), "y");
            var mye = LambdaExpression.LessThan(parameteri, parameterj);
            LambdaExpression lam = LambdaExpression.Lambda(mye, parameteri, parameterj);

            var str0 = lam.Body.ToString();
            var stroperator = lam.Body.NodeType.ToString();
            var str1 = lam.Parameters[0].ToString();
            var str2 = lam.Parameters[1].ToString();
           
            var autodelegate = lam.Compile();
            #endregion

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值