Материал: Объектно-ориентированное программирование на языке C#. Карпеев Д.О., Транин В.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Иногда возникает потребность временно сохранить некоторое значение в самом запросе. Допустим, что требуется создать переменную перечислимого типа, которую можно будет затем запросить, или же сохранить некоторое значение, чтобы в дальнейшем использовать его в операторе where. Независимо от преследуемой цели, эти виды функций могут быть осуществлены с помощью оператора let. Ниже приведена общая форма оператора let:

let имя = выражение

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

Когда приходится иметь дело с базами данных, то зачастую требуется формировать последовательность, увязывающую данные из разных источников. И это нетрудно сделать с помощью такого средства LINQ, как оператор join.

Ниже приведена общая форма оператора join.

from переменная_диапазона_А in источник_данных_А

join переменная_диапазона_В in источник_данных_В

on переменная_диапазона_А.свойство equals переменная_диапазона_В.свойство

Применяя оператор join, следует иметь в виду, что каждый источник должен содержать общие данные, которые можно сравнивать. Поэтому в приведенной выше форме этого оператора источник_данных_А и источник_данных_В должны иметь нечто общее, что подлежит сравнению. Сравниваемые элементы данных указываются в части on данного оператора. Поэтому если переменная_диапазона_А.свойство и переменная_диапазона_B.свойство равны, то эти элементы данных "увязываются" успешно. По существу, оператор join выполняет роль своеобразного фильтра, отбирая только те элементы данных, которые имеют общее значение.

16.5. Методы запроса

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

Методы запроса определяются в классе System.Linq.Enumerable и реализуются в виде методов расширения функций обобщенной формы интерфейса IEnumerable<T>.

В классе Enumerable предоставляется немало методов запроса, но основными считаются те методы, которые соответствуют описанным ранее операторам запроса. Эти методы перечислены в табл. 6 вместе с соответствующими операторами запроса. Следует, однако, иметь в виду, что эти методы имеют также перегружаемые формы, а здесь они представлены лишь в самой простой своей форме. Но именно эта их форма используется чаще всего.

Таблица 6.

Основные методы запроса

Оператор запроса

Эквивалентный метод запроса

select

Select(selector)

where

Where(predicate)

orderby

OrderBy(keySelector) или

OrderByDescending(KeySelector)

join

Join(inner, outerKeySelector, innerKeySelector,

result Selector)

group

GroupBy(keySelector)

16.6. Формирование запроса с помощью методов запроса

Переделаем пример простого запроса, представленный в начале главы, с использованием методов запроса Select() и Where():

using System;

using System.Linq;

class SimpQuery {

static void Main() {

int[] nums = { 1, -2, 3, 0, M, 5 };

// Использовать методы Where() и Select() для

// формирования простого запроса.

var posNums = nums.Where(n => n > 0).Select(r => r);

Console.Write("Положительные значения из массива nums: ");

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

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

Console.WriteLine ();

}

}

Заключение

C# является основным языком разработки программ на платформе .NET корпорации Microsoft. В нем удачно сочетаются испытанные средства программирования с самыми последними новшествами и предоставляется возможность для эффективного и очень практичного написания программ, предназначенных для вычислительной среды современных предприятий. Это, без сомнения, один из самых важных языков программирования XXI века.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1. Шилдт Г. Полное руководство C#4.0. / Г. Шилдт. – М.: ООО «И.Д. Вильямс», 2011. – 1056 с.

  2. Троэлсен Э. Язык программирования С# 2010 и платформа .NET 4.0 / Э. Троэлсен. – М.: ООО «И.Д. Вильямс», 2011. – 1392 с.

  3. Kumar S.N. LINQ quickly / S.N. Kumar. – Packt Publishing, 2007. – 250 c.

  4. Страуструп Б. Дизайн и эволюция C++ / Б. Страуструп. – СПб: Питер, 2006. – 445 с.

  5. Clark D. Beginning C# Object-Oriented Programming / D. Clark – Apress, 2011. – 371 c.

  6. Либерти Дж. Программирование на C# / Дж. Либерти. – М.: Символ-плюс, 2003. – 690 c.

  7. Петцольд Ч. Программирование в тональности С# / Ч. Петцольд. – М.: ИТД «Русская редакция», 2004. – 503 с.

  8. Рихтер Дж. Программирование на платформе Microsoft.NET Framework / Дж. Рихтер. – М.: ИТД «Русская редакция», 2003. – 512 с.

  9. Павловская Т.А. C#. Программирование на языке высокого уровня / Т.А. Павловская. – СПб: Питер, 2007. – 432 с.

  10. Richter J. CLR via C# 3rd Edition / J. Richter – Ms Press – 896 с.

  11. Watson K. Beginning Visual C# 2010 / K. Watson, C. Nagel, J.H. Pedersen – wrox – 1080 c.

Оглавление

1. Введение в ооп 3

1.1. Этапы развития технологий программирования 3

1.2. Введение в ооп 11

2. Понятие класса и объекта класса. Инкапсуляция в C# 16

2.1. Понятие класса и объекта класса. Создание объектов. Данные и методы класса 16

2.2. Передача параметров в методы класса 23

2.3. Конструкторы и деструкторы 25

2.4. Инкапсуляция в C# 28

3. Индексаторы и свойства 34

3.1. Индексаторы 34

3.2. Свойства 35

4. Наследование в C# 39

5. Полиморфизм в C#. Интерфейсы 43

5.1. Виртуальные методы и их переопределение 43

5.2. Применение абстрактных классов 45

5.3. Интерфейсы 46

6. Система типов языка C# 52

7. Структуры и перечисления 58

7.1. Тип enum 58

7.2. Типы структур 60

8. Операторы и управляющие конструкции языка C# 64

8.1. Арифметические операторы 64

8.2. Операторы отношения и логические операторы 65

8.3. Оператор присваивания 67

8.4 Оператор ? 68

8.5 Управляющие операторы 69

9. Массивы и строки 77

9.1. Массивы в C# 77

9.1.1. Одномерные массивы 77

9.1.2. Многомерные массивы 79

9.1.3. Ступенчатые массивы 81

9.2. Строки 83

9.2.1. Постоянство строк 85

10. Платформа .NET. Основные понятия и принципы работы 88

11. Пространства имен. Сборки 95

11.1. Пространства имён 95

11.2. Сборки 98

12. Время жизни переменных и область видимости переменных. Оператор new и сборка мусора 100

12.1. Тип System.CG 104

12.2. Финализация объектов 107

12.3. Создание высвобождаемых объектов 109

13. Исключения. Генерация и обработка 111

13.1. Основы обработки исключительных ситуаций 112

13.2. Применение пары ключевых слов try и catch 113

13.3. Генерирование исключений вручную 115

13.4. Использование блока finally 117

13.5. Класс Exception и получение производных классов 118

13.6. Ключевые слова checked и unchecked 121

14. Обобщения (шаблоны) и их применение в языке C# 123

15. Основные классы коллекций объектов 128

15.1. Интерфейсы необобщенных коллекций 130

15.1.1. Интерфейс ICollection 132

15.1.2. Интерфейс IList 132

15.1.3. Интерфейс IDictionary 135

16. Использование LINQ для работы с коллекциями 138

16.1. Простой запрос 139

16.2. Общая форма запроса 141

16.3. Сортировка результатов запроса с помощью оператора orderby 142

16.4. Операторы group, into, let и join 143

16.5. Методы запроса 145

16.6. Формирование запроса с помощью методов запроса 146

Заключение 148

Библиографический список 149

Учебное издание

Карпеев Дмитрий Олегович

Транин Валерий Александрович

Объектно-ориентированное

Программирование на языке C#

В авторской редакции

Компьютерный набор В.А. Транина

Подписано к изданию 30.06.2011.

Объем данных 630 Кб.

ФГБОУ ВПО «Воронежский государственный технический университет»

394026 Воронеж, Московский просп., 14

153

Источник: https://studfile.net/preview/16562554/