zoukankan      html  css  js  c++  java
  • lambda表达式和表达式树

    namespace LambdaDemo
    {
        class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }
    
        internal static class Program
        {
            static void Main(string[] args)
            {
                List<Person> persons = GetPersonList();
                persons = persons.Where(p => p.Age > 6).ToList();
                Person personP = persons.SingleOrDefault(p => p.Age == 2);
                List<Person> personsC = persons.Where(p => p.Name.Contains("儿子")).ToList();
    
                ExpressionMethod();
            }
    
    
            private static List<Person> GetPersonList()
            {
                List<Person> plist = new List<Person>();
                for (int i = 0; i < 7; i++)
                {
                    plist.Add(new Person {Name = "儿子", Age = 8 - i});
                }
                return plist;
            }
    
            // 表达式树
            private static void ExpressionMethod()
            {
                //计算 a*b+c*d的值
                ParameterExpression a = Expression.Parameter(typeof (int), "a");
                ParameterExpression b = Expression.Parameter(typeof (int), "b");
                BinaryExpression ab = Expression.Multiply(a, b);
    
                ParameterExpression c = Expression.Parameter(typeof (int), "c");
                ParameterExpression d = Expression.Parameter(typeof (int), "d");
                BinaryExpression cd = Expression.Multiply(c, d);
    
                BinaryExpression abcd = Expression.Add(ab, cd);
                Expression<Func<int, int, int, int, int>> lam = Expression.Lambda<Func<int, int, int, int, int>>(abcd, a, b,
                    c, d);
                Console.WriteLine(lam + "");
                Func<int, int, int, int, int> f = lam.Compile();
                Console.WriteLine(f(2, 1, 5, 1) + "");
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    Java中sleep方法和wait的详细区别
    判断一个字符串中出现次数最多的字符,统计这个次数
    截取字符串abcdefg的efg
    关于正则
    css 的清0
    关于alert
    新感知,可以创建自定义标签
    JS的组成部分
    把字符串首字母变成大写
    排序方法两两对比
  • 原文地址:https://www.cnblogs.com/FangZhaohu/p/5069445.html
Copyright © 2011-2022 走看看