Лабораторная работа № 2. Краткие теоретические сведения Пусть имеется список граждан из лабораторной работы 1 Организация хранения объектов в списке на языке C# с возможностью редактирования
Скачать 92 Kb.
|
Лабораторная работа 2 Использование технологии LINQ для работы с коллекцией экземпляров класса Цель работы: Исследовать особенности использования технологии LINQ для работы с коллекцией экземпляров класса. Краткие теоретические сведения Пусть имеется список граждан из лабораторной работы 1 «Организация хранения объектов в списке на языке C# с возможностью редактирования» List Рассмотрим примеры использования технологии LINQ на этом списке. Напишем запрос к нашей коллекции, возвращающий клиентов, являющихся гражданами России. var results = list.Where(g.Country == “Russia”); Выше определенная запись означает: для каждого элемента, условно названного g, списка list, для которого country == “Russia” выбирается целиком элемент g. Иначе говоря, выбираются объекты g класса Grajdanin из списка list, для которых Country == “Russia”. Список можно отсортировать по фамилии var results = list.Where(g=>g.Country == “Russia”).OrderBy(g=>g.Fam); Аналогично можно выбрать граждан с фамилией Иванов var results = list.Where(g=>g.Fam == “Иванов”); Данный список можно вывести в консольном режиме следующим образом (для этого на форму поместите элемент управления Label с именем label1): foreach (var c in results) Console.WriteLine(c); или в Label: label1.Text = ""; foreach (var g in results) label1.Text += "\n" + g.ToString(); Цикл foreach позволяет ввести переменную g, которая будет принимать поочередно все значения из списка results. Список results в свою очередь содержит список граждан России. Для отображения списка results в dataGridView необходимо записать следующий код BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = results; dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = bindingSource; bindingNavigator1.BindingSource = bindingSource; При необходимости выбора только части полей экземпляров класса Grajdanin необходимо использовать метод Select и записать: List Чтобы показать весь список нужен следующий код: BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = list; dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = bindingSource; bindingNavigator1.BindingSource = bindingSource; Порядок выполнения работы 1. Для выполнения нижеперечисленных заданий в качестве основы взять программу из лабораторной работы 1 «Организация хранения объектов в списке на языке C# с возможностью редактирования». 2. Добавить возможность фильтрации по 2-3 полям (свойствам) с использованием: – условия на равенство (числу или другому типу данных) или условия на неравенство; – условия на вхождение в диапазон; – условия на равенство первого символа строки указанному символу. Пользователь должен иметь возможность задавать требуемые значения. Например, необходимо: – получить список всех сотрудников с указанной фамилией, введенной с клавиатуры; – получить список всех сотрудников с фамилией, начинающейся на указанную букву, введенную с клавиатуры; – список всех сотрудников с зарплатой в указанном диапазоне, введенном с клавиатуры и т.д. Для выбора Ивановых необходимо записать: List Для выбора граждан, начинающихся на букву, введенную textBox1 на форме, необходимо записать: List Для выбора граждан, начинающихся на несколько букв, введенных в textBox1 на форме, необходимо записать: List Затем полученный спиcок нужно привязать к dataGridView1 как это сделано в работе 1: BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = results; dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = bindingSource; bindingNavigator1.BindingSource = bindingSource; 3. Добавить элементы управления для осуществления сортировки элементов списка по различным полям (свойствам) по возрастанию или убыванию (с возможностью указания пользователем). Например, отсортировать список сотрудников по возрастанию зарплаты. List List 4. Добавить элементы управления для модификации полей (свойств) на указанное значение в единицах измерения поля или процентах. Поле (свойство) и значение должно выбираться пользователем программы. Например, увеличение зарплаты на 20 % всем сотрудникам, увеличение зарплаты на 30 % всем инженерам, изменения фамилии всех Ивановых на Сидоров и т.д. Для изменения значения полей можно использовать метод Select с созданием объектов требуемого класса. Для увеличения зарплаты всех сотрудников на 20%: List или для увеличения зарплаты только россиян: List В последнем выражении используется тернарный оператор <условие> ? <выражение, если истина>: <выражение, если ложь>. Пример формы приложения приведен на рис. 1. Рис. 1. Пример формы приложения Контрольные вопросы Как к списку граждан добавить граждан с именем «Петр» из другого списка? Как модифицировать для некоторых элементов коллекции одно или несколько полей? Как создать коллекцию list2 с элементами из коллекции list, к каждому элементу которого будет добавлено или удалено свойство? Как создать из списка с элементами со свойствами <Фамилия> ,<Имя>, <Отчество> список с элементами со свойствами <ФИО> вида «Фамилия И.О.» и <Пол> вида «м» или «ж»? |