zoukankan      html  css  js  c++  java
  • LINQ查询表达式---------orderby子句

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

    LINQ可以按元素的一个或多个属性对元素进行排序。

    class Program
    {
        public class PerInfo
        {
            public int Id
            {
                get;
                set;
            }
            public string Name
            {
                get;
                set;
            }
            public int Age
            {
                get;
                set;
            }
        }
    
        static void Main(string[] args)
        {
            List<PerInfo> perInfos = new List<PerInfo>
            {
                new PerInfo{Id = 1, Name = "小日", Age = 15},
                new PerInfo{Id = 2, Name = "小月", Age = 17},
                new PerInfo{Id = 3, Name = "张三日", Age = 17},
                new PerInfo{Id = 4, Name = "李四月", Age = 23}
            };
    
            //1、对Id大于1的元素按升序排列
            var query1 = from q in perInfos
                         where q.Id > 1
                         orderby q.Id ascending
                         select q;
            Console.WriteLine("按Id升序排列:");
            foreach (var item in query1)
            {
                Console.WriteLine("    {0}   {1}", item.Id, item.Name);
            }
    
    
            //2、对Id大于1的元素按降序排列
            var query2 = from q in perInfos
                         where q.Id > 1
                         orderby q.Id descending
                         select q;
            Console.WriteLine("
    按Id降序排列:");
            foreach (var item in query2)
            {
                Console.WriteLine("    {0}   {1}", item.Id, item.Name);
            }
    
    
            //3、按年龄大小排列,按名字字数进行次要排序
            var query3 = from q in perInfos
                         orderby q.Age ascending, q.Name.Length descending
                         select q;
            Console.WriteLine("
    按Age升序,按名字字数进行次要降序:");
            foreach (var item in query3)
            {
                Console.WriteLine("    {0}   {1}   {2}", item.Id, item.Name, item.Age);
            }
    
    
            //4、分组按组建排序
            var query4 = from q in perInfos
                         group q by q.Age into Newpers
                         orderby Newpers.Key descending
                         select Newpers;
            Console.WriteLine("
    分组排序:");
            foreach (var item in query4)
            {
                Console.WriteLine("分组-排序键:{0}", item.Key);
                foreach (var v in item)
                {
                    Console.WriteLine("    {0}   {1}   {2}", v.Id, v.Name, v.Age);
                }
            }
    
            Console.ReadLine();
    
        }
    }
    输出结果:
    按Id升序排列:
        2   小月
        3   张三日
        4   李四月
    
    按Id降序排列:
        4   李四月
        3   张三日
        2   小月
    
    按Age升序,按名字字数进行次要降序:
        1   小日   15
        3   张三日   17
        2   小月   17
        4   李四月   23
    
    分组排序:
    分组-排序键:23
        4   李四月   23
    分组-排序键:17
        2   小月   17
        3   张三日   17
    分组-排序键:15
        1   小日   15
    

      

  • 相关阅读:
    剑指Offer-用两个栈实现队列
    剑指Offer-从尾到头打印链表
    滑动门技术实现
    解决keil5中文注释乱码方法
    faker数据填充详解
    redis在微博与微信等互联网应用笔记
    JDBC插入中文数据出现?号地解决问题
    idea配置less自动编译
    idea使用Vue的v-bind,v-on报错
    idea 代码部分格式化
  • 原文地址:https://www.cnblogs.com/haibing0107/p/6508726.html
Copyright © 2011-2022 走看看