using System;
using System.Linq;
namespace pc.linq03
{
    class Program
    {
        static void Main(string[] args)
        {
            var nums = Enumerable.Range(0, 10);
            var result1 = nums.OrderByDescending(n => n);
            var result2 = from n in nums
                          orderby n descending
                          select n;
            Array.ForEach(result1.ToArray(), n => Console.Write(n + " "));
            Console.WriteLine();
            Array.ForEach(result2.ToArray(), n => Console.Write(n+ " "));
            Console.WriteLine();
        }
    }
}
Now the above is a simple usage of ordering collection data.
if we are trying to order a collection that contains custom objects, those objects have to implement the IComparable interface.
using System;
using System.Linq;
namespace pc.linq03
{
    class Person : IComparable<Person>
    {
        public string Name { get; set; }
        public int
BirthYear { get; set; }
        public Person(string Name, int BirthYear)
        {
            this.Name = Name;
            this.BirthYear = BirthYear;
        }
        public override string
ToString() { return $"{Name} {BirthYear}"; }
        public int
CompareTo(Person other)
        {
            if (BirthYear == other.BirthYear)
               
return 0;
            else if (BirthYear
< other.BirthYear)
                    return 1;
            return -1;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            var ppl = new Person[] { new Person("pawel", 1984),
                new Person("Marin", 1983), new Person("Magda", 1984),
                new Person("Tomek",1988), new Person("Ivan", 1987),
                new Person("Trish", 1989), new Person("Jake", 1988)};
            var result1 = ppl.OrderByDescending(p => p);
            var result2 = from p in ppl
                          orderby p descending
                          select p;
            Array.ForEach(result1.ToArray(), n => Console.Write(n + ", "));
            Console.WriteLine();
            Array.ForEach(result2.ToArray(), n => Console.Write(n + ", "));
            Console.WriteLine();
        }
    }
}
If our person class didn't implement the IComparable interface the when trying to order our collection we'd get an exception.
