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

  

原文地址:https://www.cnblogs.com/haibing0107/p/6491472.html