A16_Linq查询表达式

来源:互联网 发布:大数据平台发展趋势 编辑:程序博客网 时间:2024/06/05 08:32

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{    public class Employee    {        public int ID { get; set; }        public string Name { get; set; }        public int Age { get; set; }        public int Levelnum { get; set; }        public Employee(int id, string name, int age, int levelnum)        {            ID = id;            Name = name;            Age = age;            Levelnum = levelnum;        }        public override string ToString()        {            return string.Format("ID = {0}  Name = {1}  Age = {2}  Levelnum = {3}", ID, Name, Age, Levelnum);        }    }}


using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{    public class EmpLevel    {        public int ID { get; set; }        public int LevelNum { get; set; }        public string LevelName { get; set; }        public float Salary { get; set; }        public EmpLevel(int id, int levelnum, string levelname, float salary)        {            ID = id;            LevelNum = levelnum;            LevelName = levelname;            Salary = salary;        }        public override string ToString()        {            return string.Format("ID = {0}  LevelNum = {1}  LevelName = {2}  Salary = {3}", ID, LevelNum, LevelName, Salary);        }    }}


using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{    class Demo1    {        List<Employee> empArray = new List<Employee>();        List<EmpLevel> empLeArray = new List<EmpLevel>();        List<Employee> empQueryArray = new List<Employee>();        public Demo1()        {            empLeArray = new List<EmpLevel>();            empArray = new List<Employee>();            empQueryArray = new List<Employee>();            //集合信息,初始化数据(雇员信息)            empArray.Add(new Employee(1, "姜  文", 40, 4));            empArray.Add(new Employee(2, "冯小刚", 50, 5));            empArray.Add(new Employee(3, "张艺谋", 60, 6));            empArray.Add(new Employee(4, "王宝强", 35, 3));            empArray.Add(new Employee(5, "范冰冰", 30, 3));            empArray.Add(new Employee(6, "李冰冰", 29, 2));            empArray.Add(new Employee(7, "李一凡", 20, 1));            //初始化雇员级别信息            empLeArray.Add(new EmpLevel(1, 1, "T1-1", 5000F));            empLeArray.Add(new EmpLevel(2, 2, "T1-2", 8000F));            empLeArray.Add(new EmpLevel(3, 3, "T1-3", 10000F));            empLeArray.Add(new EmpLevel(4, 4, "T2-1", 15000F));            empLeArray.Add(new EmpLevel(5, 5, "T2-2", 20000F));            empLeArray.Add(new EmpLevel(6, 6, "T3-1", 30000F));        }                //传统查询:查询Level级别大于2的所有公司雇员        public void Test1()        {            foreach (Employee emp in empArray)            {                if (emp.Levelnum > 2)                {                    empQueryArray.Add(emp);                }            }            foreach (Employee emp in empQueryArray)            {                Console.WriteLine(emp.ToString());            }        }        //使用Linq进行查询Level级别大于2的所有公司雇员        public void Test2()        {            var result = from m in empArray                         where m.Levelnum > 2 && m.Age >= 50                         select m;            foreach (var item in result)            {                Console.WriteLine(item.ToString());            }        }        static void Main1(string[] args)        {            Demo1 obj = new Demo1();            //obj.Test1();            obj.Test2();        }    }}


//C#扩展方法:给已经定义好的类,添加新的方法//只有静态类才能添加扩展方法//扩展方法必须是静态的using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{    static class Demo3    {        public static void Test1()        {            string str = "Hello Everyone";            string strResult = str.TestMethod();            string strResult2 = str.TestMethod("hahaha");            Console.WriteLine(strResult);            Console.WriteLine(strResult2);        }        //无参扩展方法        public static string TestMethod(this string name)        {            return name + "Good morning";        }        //有一个参数的扩展方法        public static string TestMethod(this string name, string para)        {            return name + "Good morning" + para;        }        static void Main1(string[] args)        {            Demo3.Test1();        }    }}

//Linq的扩展方法using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{    class Demo4    {        List<Employee> empArray = new List<Employee>();        List<EmpLevel> empLeArray = new List<EmpLevel>();        List<Employee> empQueryArray = new List<Employee>();        public Demo4()        {            empLeArray = new List<EmpLevel>();            empArray = new List<Employee>();            empQueryArray = new List<Employee>();            //集合信息,初始化数据(雇员信息)            empArray.Add(new Employee(1, "姜  文", 40, 3));            empArray.Add(new Employee(2, "冯小刚", 50, 5));            empArray.Add(new Employee(3, "张艺谋", 60, 6));            empArray.Add(new Employee(4, "王宝强", 35, 3));            empArray.Add(new Employee(5, "范冰冰", 30, 3));            empArray.Add(new Employee(6, "李冰冰", 29, 2));            empArray.Add(new Employee(7, "李一凡", 20, 2));            //初始化雇员级别信息            empLeArray.Add(new EmpLevel(1, 1, "T1-1", 5000F));            empLeArray.Add(new EmpLevel(2, 2, "T1-2", 8000F));            empLeArray.Add(new EmpLevel(3, 3, "T1-3", 10000F));            empLeArray.Add(new EmpLevel(4, 4, "T2-1", 15000F));            empLeArray.Add(new EmpLevel(5, 5, "T2-2", 20000F));            empLeArray.Add(new EmpLevel(6, 6, "T3-1", 30000F));        }        //使用Linq的扩展方法,查询等级大于2的雇员信息        public void Test1()        {            //使用扩展方法1            //var result = empArray.Where(FilterConditionMethod);            //使用扩展方法2 lambda表达式            var result = empArray.Where(a => a.Levelnum > 2);            foreach (var item in result)            {                Console.WriteLine(item.ToString());            }        }        /*        private bool FilterConditionMethod(Employee emp)        {            if (emp.Levelnum > 2)            {                return true;            }            else            {                return false;            }        }        */        //联合查询 查询两个集合的并集        public void Test2()        {            /*            var queryResult = from e in empArray                              from l in empLeArray                              select new { e, l }; //输出两个集合的并集            */            //查询出所有大于3级的信息            /*            var queryResult = from e in empArray                              from l in empLeArray                              where e.Levelnum == l.LevelNum && e.Levelnum > 3                              select new { e, l }; //输出两个集合的并集            */            //输出所有大于三级的雇员姓名、级别、工资            var queryResult = from e in empArray                              from l in empLeArray                              where e.Levelnum == l.LevelNum && e.Levelnum > 3                              select new { e.Name, l.LevelName, l.Salary }; //输出两个集合的并集            foreach (var item in queryResult)            {                //Console.WriteLine(item.ToString());                Console.WriteLine("姓名 = {0}  级别 = {1}  工资 = {2}",item.Name, item.LevelName, item.Salary);            }        }        //排序        public void Test3()        {             //输出所有大于1级的雇员姓名、级别、工资 且根据姓名,级别和年龄进行排序            var queryResult = from e in empArray                              from l in empLeArray                              where e.Levelnum == l.LevelNum && e.Levelnum > 1                              orderby e.Levelnum, e.Name, e.Age //descending 降序关键字 //排序语句                              select new { e.Name, l.LevelName, l.Salary }; //输出两个集合的并集            foreach (var item in queryResult)            {                //Console.WriteLine(item.ToString());                Console.WriteLine("姓名 = {0}  级别 = {1}  工资 = {2}",item.Name, item.LevelName, item.Salary);            }        }        //Join On关键字 联合查询        public void Test4()        {            var queryResult = from e in empArray                              join l in empLeArray                              on e.Levelnum equals l.LevelNum                              where e.Levelnum > 2 && l.Salary > 20000                              select new {e,l};            foreach (var item in queryResult)            {                Console.WriteLine("名称 = "+item.e.Name + "  " + "级别 = " + item.l.LevelName);            }        }        //Group by 分组关键字        public void Test5()        {             //查询雇员集合中,按照级别分组,统计每个级别有多少人            var queryResult = from e in empArray                              group e by e.Levelnum into g //分组结果为g                              select new { g.Key, counts = g.Count() };            foreach (var item in queryResult)            {                Console.WriteLine("级别:"+item.Key+"  "+"数量:"+item.counts);            }        }        //any关键字:至少有一个符合条件        //all关键字:全都满足条件        public void Test6()        {            bool boolResult = empArray.Any(m => m.Name == "王宝强");            Console.WriteLine("是否有一个或以上个员工叫“王宝强”:" + boolResult);        }        public void Test7()        {            bool boolResult = empArray.All(m => m.Name == "王宝强");            Console.WriteLine("是否有所有员工都叫“王宝强”:" + boolResult);        }        static void Main(string[] args)        {            Demo4 obj = new Demo4();            //obj.Test1();            //obj.Test2();            //obj.Test3();            //obj.Test5();            obj.Test6();            obj.Test7();        }    }}








原创粉丝点击