Câu trả lời:
Như Brannon nói, đó là OrderByDescendingvà ThenByDescending:
var query = from person in people
            orderby person.Name descending, person.Age descending
            select person.Name;
tương đương với:
var query = people.OrderByDescending(person => person.Name)
                  .ThenByDescending(person => person.Age)
                  .Select(person => person.Name);
              Thử cái này:
List<int> list = new List<int>();
list.Add(1);
list.Add(5);
list.Add(4);
list.Add(3);
list.Add(2);
foreach (var item in list.OrderByDescending(x => x))
{
    Console.WriteLine(item);                
}
              Hãy thử cách này khác:
var qry = Employees
          .OrderByDescending (s => s.EmpFName)
          .ThenBy (s => s.Address)
          .Select (s => s.EmpCode);
              Điều này chỉ hoạt động trong các trường hợp bạn có trường số, nhưng bạn có thể đặt dấu trừ trước tên trường như vậy:
reportingNameGroups = reportingNameGroups.OrderBy(x=> - x.GroupNodeId);
Tuy nhiên, điều này hoạt động hơi khác một chút so với OrderByDescendingkhi bạn đang chạy nó trên một int?hoặc double?hoặc decimal?các trường.
Điều gì sẽ xảy ra là trên OrderByDescendingnull sẽ ở cuối, so với phương thức này thì null sẽ ở đầu. Điều này rất hữu ích nếu bạn muốn xáo trộn null xung quanh mà không chia dữ liệu thành từng mảnh và ghép nó sau.