
- •Введение
- •Сравнение языков С++ и C#
- •Логические выражения
- •Функции для ввода и вывода в языке C#
- •Управление форматом числовых данных:
- •Обработка исключительных ситуаций
- •Методы и модификаторы параметров
- •Неявно типизированные переменные
- •Понятие класса
- •Свойства
- •Индексаторы
- •Одномерные индексаторы
- •Многомерные индексаторы
- •Перегрузка методов
- •Перегрузка знаков операций
- •Наследование
- •Виртуальные функции
- •Работа с файлами
- •Работа с каталогами
- •Абстрактный класс FileSystemInfo
- •Класс DirectoryInfo
- •Сериализация
- •FileSystemWatcher – отслеживание событий, связанных с файлами
- •Обобщения (шаблоны)
- •Интерфейсы
- •Коллекции
- •LINQ
- •Грамматика выражений запросов
- •Синтаксис запросов
- •Проекция и фильтрация
- •Упорядочение
- •Агрегирующие запросы
- •Операции с коллекциями
- •Операция Concat
- •Операция Union
- •Преобразование
- •Объединение последовательностей
- •FirstOrDefault
- •Группировка
- •Групповая адресация
- •Обработка событий
- •Групповое преобразование делегируемых методов
- •Применение методов экземпляра в качестве делегатов
- •Групповая адресация
- •Ковариантность и контравариантность
- •Класс System. Delegate
- •Назначение делегатов
- •Анонимные функции
- •Анонимные методы
- •Передача аргументов анонимному методу
- •Возврат значения из анонимного метода
- •Применение внешних переменных в анонимных методах
- •Лямбда-выражения
- •Лямбда-оператор
- •Одиночные лямбда-выражения
- •Блочные лямбда-выражения
- •События
- •Пример групповой адресации события
- •Применение аксессоров событий
- •Разнообразные возможности событий
- •Применение анонимных методов и лямбда-выражений вместе с событиями
- •Рекомендации по обработке событий в среде .NET Framework
- •Применение делегатов EventHandler<TEventArgs> и EventHandler
- •Практический пример обработки событий

Чернов Э. А. |
- 105 - |
Лекции по языку C# v 2.3 |
Агрегирующие запросы
Агрегирующие запросы обеспечивают реализацию функции от всех элементов последовательности: подсчет количества элементов, вычисление среднего арифметического и т. д.
Основные операции для агрегирующих запросов: Average, Count, Max, Min, Sum. Практически все эти операции имеют прототипы с одновременной выборкой элементов по заданному условию. Пример вычисления среднего значения:
double avr = lst.Average(t =>t.wage);//
Console.WriteLine(" Средняя зарплата по списку = {0:F3}", avr);
Лямбда-выражение применяется для обращения к полю объекта. Результат выполнения программы имеет вид:
Операция Count применяется для подсчета количества каких-либо элементов. При использовании ее без параметров она просто вычисляет длину списка, и ее можно заменить стандартным атрибутом Length. Интерес представляет прототип этой операции, подсчитывающий количество элементов с одновременной проверкой некоторого условия. Запишем подсчет имен в списке lst, начинающихся на букву 'A'.
int cnta = lst.Count(t =>t.secname.StartsWith("А"));// Console.WriteLine("Сколько имен начинается с буквы \"А\" = {0}", cnta);
Результат выполнения программы имеет вид:
Аналогично реализуется операция Sum. Однако операция с пустым списком параметров позволяет подсчитать сумму соответствующего столбца.
Операции поиска минимума и максимума имеют по несколько прототипов. Простой запрос для числовых значений:
double minw = lst.Min(t => t.wage);//
Console.WriteLine(" Минимальная зарплата по списку = {0:F3}", minw);
Результат выполнения программы имеет вид:
Запрос для поиска по минимальной длине строки:
int mina = lst.Min(t =>t.secname.Length);// Console.WriteLine("\n Минимальная длина имени = {0}", mina);
Результат выполнения программы имеет вид: