• LINQ查询表达式---------select子句


    LINQ查询表达式---------select子句

    1.1常见的select子句查询

    class Program
    {
        public class PerInfo
        {
            public int Id
            {
                get;
                set;
            }
            public string Name
            {
                get;
                set;
            }
            public int Age
            {
                get;
                set;
            }
            public List<int> Scores
            {
                get;
                set;
            }
        }
    
        List<PerInfo> PerInfos = new List<PerInfo>()
        {
            new PerInfo
            {
                Id = 1, Name = "小白", Age = 15, Scores = new List<int>()
                {
                    78, 88, 95, 60
                }
            },
            new PerInfo
            {
                Id = 2, Name = "小日", Age = 18, Scores = new List<int>()
                {
                    98, 86, 79, 99
                }
            },
            new PerInfo
            {
                Id = 3, Name = "小月", Age = 21, Scores = new List<int>()
                {
                    95, 95, 96, 97
                }
            },
            new PerInfo
            {
                Id = 4, Name = "小明", Age = 19, Scores = new List<int>()
                {
                    96, 97, 98, 99
                }
            }
        };
    
        static void Main(string[] args)
        {
            Program p = new Program();
            var query = from q in p.PerInfos
                        select q;
            foreach (PerInfo per in query)
            {
                Console.WriteLine("姓名:{0},年龄:{1}", per.Name, per.Age);
            }
    
            Console.ReadLine();
        }
    }
    输出结果:
    姓名:小白,年龄:15
    姓名:小日,年龄:18
    姓名:小月,年龄:21
    姓名:小明,年龄:19
    

     

    1.2 其他形式的select查询

    class Program
    {
        public class PerInfo
        {
            public int Id
            {
                get;
                set;
            }
            public string Name
            {
                get;
                set;
            }
            public int Age
            {
                get;
                set;
            }
            public List<int> Scores
            {
                get;
                set;
            }
    
            public CustrInfo GetCustrInfo(List<CustrInfo> p, int id)
            {
                CustrInfo cInfo = (from q in p
                                   where q.Id == id
                                   select q).FirstOrDefault();
    
                return cInfo;
            }
    
            public override string ToString()
            {
                return "姓名:" + Name + " 年龄:" + Age;
            }
        }
    
        public class CustrInfo
        {
            public int Id
            {
                get;
                set;
            }
            public string Tel
            {
                get;
                set;
            }
            public string Email
            {
                get;
                set;
            }
            public override string ToString()
            {
                return "邮箱:" + Email + "电话:" + Tel;
            }
        }
    
        public class ScoreInfo
        {
            public double Average
            {
                get;
                set;
            }
            public int ID
            {
                get;
                set;
            }
        }
    
    
        static void Main(string[] args)
        {
            List<PerInfo> perInfos = new List<PerInfo>()
            {
                new PerInfo
                {
                    Id = 1, Name = "小白", Age = 15, Scores = new List<int>()
                    {
                        78, 88, 95, 60
                    }
                },
                new PerInfo
                {
                    Id = 2, Name = "小日", Age = 18, Scores = new List<int>()
                    {
                        98, 86, 79, 99
                    }
                },
                new PerInfo
                {
                    Id = 3, Name = "小月", Age = 21, Scores = new List<int>()
                    {
                        95, 95, 96, 97
                    }
                },
                new PerInfo
                {
                    Id = 4, Name = "小明", Age = 19, Scores = new List<int>()
                    {
                        96, 97, 98, 99
                    }
                }
            };
    
    
            List<CustrInfo> custrInfos = new List<CustrInfo>()
            {
                new CustrInfo {Id = 1, Tel = "110", Email = "Xuahau@123.Com"},
                new CustrInfo {Id = 2, Tel = "120", Email = "xchads@qq.Com"},
                new CustrInfo {Id = 3, Tel = "119", Email = "kashda@q56.Com"},
                new CustrInfo {Id = 4, Tel = "999", Email = "sadhkuu@143.Com"}
            };
    
    
            Program p = new Program();
    
            //1 根据查询条件查询数据源
            var query1 = from q in perInfos
                         where q.Id > 1
                         select q;
    
            Console.WriteLine("Query1:");
            foreach (PerInfo per in query1)
            {
                Console.WriteLine(per.ToString());
            }
    
    
            //2 查询单个属性
            var query2 = from q in perInfos
                         where q.Id > 1
                         select q.Name;
    
            Console.WriteLine("
    Query2:");
            foreach (string s in query2)
            {
                Console.WriteLine(s);
            }
    
    
            //3 查询一个经过筛选的对象
            var query3 = from q in perInfos
                         where q.Id > 1
                         select q.GetCustrInfo(custrInfos, q.Id);
    
            Console.WriteLine("
    Query3:");
            foreach (CustrInfo c in query3)
            {
                Console.WriteLine(c.ToString());
            }
    
    
            //4 查询内部数组
            var query4 = from q in perInfos
                         where q.Id > 1
                         select q.Scores[0];
    
            Console.WriteLine("
    Query4:");
            foreach (int i in query4)
            {
                Console.WriteLine(i);
            }
    
            //5 表达式
            var query5 = from q in perInfos
                         where q.Id > 1
                         select q.Scores[0] * 1.1;
    
            Console.WriteLine("
    Query5:");
            foreach (int i in query5)
            {
                Console.WriteLine(i);
            }
    
            //6 求平均数
            var query6 = from q in perInfos
                         where q.Id > 1
                         select q.Scores.Average();
    
            Console.WriteLine("
    Query6:");
            foreach (int i in query6)
            {
                Console.WriteLine(i);
            }
    
            //7 查询多个属性
            var query7 = from q in perInfos
                         where q.Id > 1
                         select new
            {
                q.Name, q.Age
            };
    
            Console.WriteLine("
    Query7:");
            foreach (var item in query7)
            {
                Console.WriteLine(item.Name + " " + item.Age);
            }
    
            //8 对查询结果进行投影
            var query8 = from q in perInfos
                         where q.Id > 1
                         select new ScoreInfo
            {
                ID = q.Id,
                Average = q.Scores.Average()
            };
    
            Console.WriteLine("
    Query8:");
            foreach (var item in query8)
            {
                Console.WriteLine("{0},{1}", item.ID, item.Average);
            }
    
    
            //9 查询平均分大于85的联系人信息
            var query9 = from q in perInfos
                         where q.Scores.Average() > 85
                         join ci in custrInfos on q.Id equals ci.Id
                         select ci;
    
            Console.WriteLine("
    Query9:");
            foreach (var item in query9)
            {
                Console.WriteLine("{0}  {1}  {2}", item.Id, item.Email, item.Tel);
            }
    
    
            Console.ReadLine();
        }
    }
    输出结果:
    Query1:
    姓名:小日 年龄:18
    姓名:小月 年龄:21
    姓名:小明 年龄:19
    
    Query2:
    小日
    小月
    小明
    
    Query3:
    邮箱:xchads@qq.Com电话:120
    邮箱:kashda@q56.Com电话:119
    邮箱:sadhkuu@143.Com电话:999
    
    Query4:
    98
    95
    96
    
    Query5:
    107
    104
    105
    
    Query6:
    90
    95
    97
    
    Query7:
    小日 18
    小月 21
    小明 19
    
    Query8:
    2,90.5
    3,95.75
    4,97.5
    
    Query9:
    2  xchads@qq.Com  120
    3  kashda@q56.Com  119
    4  sadhkuu@143.Com  999
    

      

  • 相关阅读:
    [Jobdu] 题目1528:最长回文子串
    [Jobdu] 题目1510:替换空格
    [Leetcode] Candy
    [Leetcode] Jump Game
    [Leetcode] Longest Valid Parentheses
    [Leetcode] Triangle
    [Leetcode] Populating Next Right Pointers in Each Node
    java web作用域page request session application
    String对象不可改变的特性及内存机制
    Java IO
  • 原文地址:https://www.cnblogs.com/haibing0107/p/6491472.html
Copyright © 2020-2023  润新知