Сформировать запрос на получение значений



В отсортированном порядке,

var posNums = from n in nums orderby n select n;

 

Console.Write("Значения по нарастающей: ");

Выполнить запрос и вывести его результаты.

foreach(int i in posNums) Console.Write(i + " ");

}

}

 

При выполнении этой программы получается следующий результат.

 

Значения по нарастающей: -19 -5 0 2 4 7 10

 

Для того чтобы изменить порядок сортировки по нарастающей на сортировку по убывающей, достаточно указать ключевое слово 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 accInfo = from acc in accounts

Orderby acc.LastName, acc.FirstName, acc.Balance

select acc;

 

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

string str = "";

 

Выполнить запрос и вывести его результаты,

foreach (Account acc in accInfo) {

if (str != acc.FirstName) {

Console.WriteLine();

str = acc.FirstName;

}

Console.WriteLine("{0}, {1}\tHoMep счета: {2}, {3}",

Acc.LastName, acc.FirstName,

acc.AccountNumber, acc.Balance);

Acc.LastName, acc.FirstName,

//acc.AccountNumber, acc.Balance);

}

Console.WriteLine();

}

}

 

Ниже приведен результат выполнения этой программы.

 

Счета в отсортированном порядке:

Джонс, Дженни Номер счета: 108СК, $10.98

 

Джонс, Ральф Номер счета: 434СК, ($123.32)

Джонс, Ральф Номер счета: 454ММ, $987.13

Джонс, Ральф Номер счета: 436CD, $1,923.85

 

Краммер, Бетти Номер счета: 968ММ, $5,146.67

 

Краммер, Тед Номер счета: 897CD, $3,223.19

 

Смит, Альберт Номер счета: 445СК, ($213.67)

 

Смит, Карл Номер счета: 078CD, $15,345.99

 

Смит, Сара Номер счета: 843СК, $345.00

Смит, Сара Номер счета: 543ММ, $5,017.40

Смит, Сара Номер счета: 547CD, $34,955.79

 

Смит, Том Номер счета: 132СК, $100.23

Смит, Том Номер счета: 132CD, $10,000.00

 

Внимательно проанализируем оператор orderby в следующем запросе из приведенной выше программы.

 

var accInfo = from асс in accounts


Дата добавления: 2019-02-12; просмотров: 266; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!