zoukankan      html  css  js  c++  java
  • Linq学习笔记延迟操作符(排序操作符)

    4.排序操作符

    OrderBy

    作用:基于一个keySelector方法对输入序列进行排序,keySelector方法

    将为每个输入元素返回一个键值,并会生成一个已排序的输出序列

    IOrderedEnumerable<T>,这个输出序列将根据返回的键值按升序排列。

    原型

        public static IOrderedEnumerable<T> OrderBy<T, K>(
            this IEnumerable<T> source, 
            Func<T, K> keySelector)
        where
            K:IComparable<K>;
        public static IOrderedEnumerable<T> OrderBy<T, K>(
            this IEnumerable<T> source,
            Func<T, K> keySelector,
            IComparable<K> comparer);

    例子

        static void Main(string[] args)
        {
            int[] items = { 12,23,1,56,3,10,100,32,9,15};
    
            var result = items.OrderBy(c => c);
            //显示查询结果
             foreach (var item in result)
            {
                Console.WriteLine(item);
            }
    
            Console.Read();
        }

    结果

    order1

    例子

        public class Student
        {
            public int Id;
            public string Name;
            public int Age;
        }
        public class TestComparer : IComparer<int>
        {
            public int Compare(int x, int y)
            {
                if (x < y)
                {
                    return (-1);
                }
                else if (x > y)
                {
                    return (1);
                }
                else
                {
                    return (0);
                }
            }
        }
        static void Main(string[] args)
        {
            List<Student> items = new List<Student>()
            {
                new Student{
                    Id = 1,
                    Name = "yxg1",
                    Age = 20
                },
                new Student{
                    Id = 2,
                    Name = "yxg2",
                    Age = 10
                },
                new Student{
                    Id = 3,
                    Name = "yxg3",
                    Age = 60
                },
                new Student{
                    Id = 4,
                    Name = "yxg4",
                    Age = 50
                },
                new Student{
                    Id = 5,
                    Name = "yxg5",
                    Age = 70
                }
            };
            TestComparer t = new TestComparer();
            var result = items.OrderBy(c => c.Age,t);
            //显示查询结果
             foreach (var item in result)
            {
                Console.WriteLine(item.Id + ":" + item.Name + ":" + item.Age);
            }
    
            Console.Read();
        }

    结果

    order2

    OrderByDescending

    作用: 和OrderBy相似,区别在于对序列中的元素进行降序排列。

    原型:和OrderBy操作符相同

        public static IOrderedEnumerable<T> orderByDescending<T, K>(
            this IEnumerable<T> source,
            Func<T, K> keySelector)
        where 
            K: IComparable<K>;
        public static IOrderedEnumerable<T> OrderBy<T, K>(
            this IEnumerable<T> source,
            Func<T, K> keySelector,
            IComparable<K> comparer);

    例子

        static void Main(string[] args)
        {
            int[] items = { 12, 23, 1, 56, 3, 10, 100, 32, 9, 15 };
    
            var result = items.OrderByDescending(c => c);
            //显示查询结果
             foreach (var item in result)
            {
                Console.WriteLine(item);
            }
    
            Console.Read();
        }

    结果

    order3

    例子

        public class Student
        {
            public int Id;
            public string Name;
            public int Age;
        }
        public class TestComparer : IComparer<int>
        {
            public int Compare(int x, int y)
            {
                if (x < y)
                {
                    return (-1);
                }
                else if (x > y)
                {
                    return (1);
                }
                else
                {
                    return (0);
                }
            }
        }

        static void Main(string[] args)
        {
            List<Student> items = new List<Student>()
            {
                new Student{
                    Id = 1,
                    Name = "yxg1",
                    Age = 20
                },
                new Student{
                    Id = 2,
                    Name = "yxg2",
                    Age = 10
                },
                new Student{
                    Id = 3,
                    Name = "yxg3",
                    Age = 60
                },
                new Student{
                    Id = 4,
                    Name = "yxg4",
                    Age = 50
                },
                new Student{
                    Id = 5,
                    Name = "yxg5",
                    Age = 70
                }
            };
            TestComparer t = new TestComparer();
            var result = items.OrderByDescending(c => c.Age,t);
            //显示查询结果
             foreach (var item in result)
            {
                Console.WriteLine(item.Id + ":" + item.Name + ":" + item.Age);
            }
    
            Console.Read();
        }

    结果

    order4

    ThenBy

    作用:使用在OrderBy(OrderByDescending)操作符之后,输入序列根据keySelector方法

    将返回一个键值进行排序,并将生成一个类型为IOrderedEnumerable<T>的已排序的输出序列

    原型

        public static IOrderedEnumerable<T> ThenBy<T, K>(
            this IOrderedEnumerable<T> source,
            Func<T, K> keySelector)
        where
            K : IComparable<K>;
        public static IOrderedEnumerable<T> ThenBy<T, K>(
            this IOrderedEnumerable<T> source,
            Func<T, K> keySelector,
            IComparer<K> comparer);

    ThenByDescending

    作用:和ThenBy相似,区别在于对序列中的元素进行降序排列。

    原型

        public static IOrderedEnumerable<T> ThenBy<T, K>(
            this IOrderedEnumerable<T> source,
            Func<T, K> keySelector)
        where
            K : IComparable<K>;
        public static IOrderedEnumerable<T> ThenBy<T, K>(
            this IOrderedEnumerable<T> source,
            Func<T, K> keySelector,
            IComparer<K> comparer);

    以上两个操作符和之前的操作符类似,就不写例子了。

    Reverse

    作用:可以输出与输入序列的类型相同,但顺序相反的序列。

    原型

        public static IEnumerable<T> Reverse<T>(
            this IEnumerable<T> source
            );

    例子

        static void Main(string[] args)
        {
            int[] items = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    
            var result = items.Reverse();
            //显示查询结果
             foreach (var item in result)
            {
                Console.WriteLine(item);
            }
    
            Console.Read();
    
        }

    结果

    order5

  • 相关阅读:
    美团面试(c++方向)
    浪潮面试-软开
    ofo C++面试
    B树、B+树等
    爱奇艺2017秋招笔试(C++智能设备方向)
    腾讯内推一面C++
    i++ 相比 ++i 哪个更高效?为什么?
    进程间的通讯(IPC)方式
    一台服务器能够支持多少TCP并发连接呢?
    可重入和不可重入
  • 原文地址:https://www.cnblogs.com/yangxi1081/p/2487639.html
Copyright © 2011-2022 走看看