Для того чтобы изменить порядок сортировки по нарастающей на сортировку по убывающей, достаточно указать ключевое слово descending, как показано ниже.

var posNums = from n in nums

orderby n descending select n;

Попробовав выполнить этот запрос, вы получите значения в обратном порядке. Зачастую сортировка результатов запроса проводится по единственному критерию. Тем не менее для сортировки по нескольким критериям служит приведенная ниже форма оператора orderby.

orderby элемент_А направление, элемент_В направление, элемент_С направление, ...

В данной форме элемент_А обозначает конкретный элемент, по которому проводится основная сортировка; элемент_В — элемент, по которому производится сортировка каждой группы эквивалентных элементов; элемент_С — элемент, по которому производится сортировка всех этих групп, и т.д. Таким образом, каждый последующий элемент обозначает дополнительный критерий сортировки. Во всех этих критериях указывать направление сортировки необязательно, но по умолчанию сортировка проводится по нарастающей. Ниже приведен пример программы, в которой сортировка информации о банковских счетах осуществляется по трем критериям: фамилии, имени и остатку на счете.

// Сортировать результаты запроса по нескольким // критериям, используя оператор orderby.

using System; using System.Linq;

class Account {

public string FirstName { get; private set; } public string LastName { get; private set; } public double Balance { get; private set; } public string AccountNumber { get; private set; }

public Account(string fn, string In, string accnum, double b) {

FirstName = fn;

LastName = In;

AccountNumber = accnum;

Balance = b;

}

}

class OrderbyDemo { static void Main() {

// Сформировать исходные данные.

Account[] accounts =

{ new Account('Том', 'Смит', '132CK', 100.23), new Account('Том', 'Смит', '132CD', 10000.00),

new    Account('Ральф',    'Джонс',    '436CD',    1923.85),

new    Account    ('Ральф',    'Джонс',    '454MM',    987.132),

new    Account('Тед', 'Краммер',    '897CD',    3223.19),

new    Account('Ральф',    'Джонс',    '434CK',    -123.32),

new Account('Capa',    'Смит',    '543MM',    5017.40),

new Account('Capa',    'Смит',    '547CD',    34955.79),

new Account('Capa',    'Смит',    '843CK',    345.00),

new Account('Альберт', 'Смит', '445CK', -213.67), new Account('Бетти', 'Краммер','968MM',5146.67), new Account('Карл',    'Смит',    '078CD',    15345.99),

new Account('Дженни', 'Джонс', '108CK', 10.98)

};

// Сформировать запрос на получение сведений о // банковских счетах в отсортированном порядке.

// Отсортировать эти сведения сначала по имени, затем //по фамилии и, наконец, по остатку на счете, var acclnfo = from асс in accounts

orderby acc.LastName, acc.FirstName, acc.Balance select acc;

Console.WriteLine('Счета в отсортированном порядке: ') ; string str = '';

// Выполнить запрос и вывести его результаты, foreach(Account acc in acclnfo) { if(str != acc.FirstName) {

Console.WriteLine(); str = acc.FirstName;

}

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату