C#中使用泛型及Lambda表达式的例子 来自 http://blog.163.com/dpj_001/

namespace LambdaApplication
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    class Program
    {
        static void Main(string[] args)
        {
            /// 有六个员工,基本信息如下
            /// 姓名    年龄    薪金
            /// 张飞    25       5000.00
            /// 张飞    25       6000.00
            /// 关羽    27       5600.98
            /// 赵云    25       9000.00
            /// 刘备    40      15000.00
            /// 诸葛亮  25      12000.00
            List<employee> es = new List<employee> { new employee("张飞",25,5000m),new employee("张飞", 25,6000m), new employee("关羽", 27, 5600.98m), new employee("赵云", 25, 9000), new employee("刘备", 40, 15000), new employee("诸葛亮",24,12000) };


            /// 课题1:得到所有的姓名是"张飞"的员工,相当于 Sql 中的 where name = "张飞"
            List<employee> es1 = es.FindAll(o => o.Name == "张飞");


            /// 课题2:得到所有员工的最大年龄,相当于 Sql 中的 select max(Arg)
            int maxArg = es.Max<employee>(o => o.Age);


            /// 课题三:得到所有员工的平均工资,相当于 Sql 中的 select avg(Salary)
            decimal avgSalary = es.Average<employee>(o => o.Salary);


            /// 课题四:得到员工的姓名的花名册,相当于 Sql 中的 select name
            IEnumerable<string> names = es.Select<employee, string>(o => o.Name);


            /// 课题五:得到所有员工的姓名的花名册,但不能有重复的姓名,相当于 Sql 中的 select distinct name
            IEnumerable<string> names1 = es.Select<employee, string>(o => o.Name).Distinct();


            /// 课题六:得到所有的姓"张"的员工,相当于 Sql 中的 where name like '张%'
            List<employee> es2 = es.FindAll(o => o.Name.IndexOf("") == 0);


            /// 课题七:得到所有的姓名中含有"葛"的员工,相当于 Sql 中的 where name like '%葛%'
            List<employee> es3 = es.FindAll(o => o.Name.IndexOf("") > 0);


            /// 课题八:得到所有的姓名中的最后一个字是"羽"并且薪金大于 3000 的员工,相当于 Sql 中的 where name like '%羽' and Salary > 3000
            List<employee> es4 = es.FindAll(o => o.Name.IndexOf("") == o.Name.Length - 1 && o.Salary > 3000);
        }
    }


    /// <summary>
    /// 员工
    /// </summary>
    internal class employee
    {
        /// <summary>
        /// 员工
        /// </summary>
        internal employee() { }


        /// <summary>
        /// 员工
        /// </summary>
        /// <param name="name"></param>
        /// <param name="age"></param>
        /// <param name="salary"></param>
        internal employee(string name, int age, decimal salary)
        {
            Name = name;
            Age = age;
            Salary = salary;
        }
        /// <summary>
        /// 姓名
        /// </summary>
        internal string Name { get; set; }


        /// <summary>
        /// 年龄
        /// </summary>
        internal int Age { get; set; }


        /// <summary>
        /// 薪水
        /// </summary>
        internal decimal Salary { get; set; }
    }
}

posted @ 2022-10-31 16:34  驼七  阅读(38)  评论(0)    收藏  举报