Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пак Новакова + / LinQЧ12СоловьёвЯрославцева

.docx
Скачиваний:
46
Добавлен:
03.06.2014
Размер:
94.08 Кб
Скачать

МИНОБР НАУКИ РОССИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» им. В. И.УЛЬЯНОВА (ЛЕНИНА)» (СПбГЭТУ)

ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ И ИНФОРМАТИКИ

КАФЕДРА СИСТЕМ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ

ЛАБОРАТОРНАЯ РАБОТА

по учебной дисциплине «Паттерны проектирования приложений»

на тему «Углублённое изучение ООП»

Часть 1-2

«Использование LINQ»

Выполнили:

Соловьёв С.П.

Ярославцева В.А.

Группа: 9301

Факультет: КТИ

Проверил: Новакова Н.Е.

Санкт-Петербург

2012

Цель работы: Научиться пользоваться LINQ и его основными функциями.

Общие сведения:

LINQ (Language-Integrated Query) — это название набора технологий, основанных на интеграции возможностей запроса непосредственно в язык C# (а также в Visual Basic и, возможно, в любые другие языки .NET).

Для разработчиков, создающих запросы, наиболее очевидная "встроенная в язык" часть LINQ — это выражение запросов. При помощи синтаксиса запросов можно выполнять сложные операции фильтрация, упорядочения и группировки в источниках данных, причем для этого требуется крайне небольшой объем кода.

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

Подготовка к выполнению лабораторной работы

1. Откройте Visual Studio.

2. Создайте новый проект типа Windows Forms Application с названием OopLabs.Linq.

3. Добавьте в проект файл Artist.cs.

4. Изучите описание класса Album. Класс хранит информацию о музыкальном альбоме:

имя исполнителя, название, дату выхода. Кроме того, определение класса включает

статический метод Album.GetAlbums(), возвращающий список некоторых альбомов

нескольких групп.

Формализация задачи

Рисунок 1.

Упражнение 1 — Вывод списка групп

В упражнении 1 необходимо добавить на главную форму поле (список), куда будут выводиться список исполнителей. Для отображения коллекции нужно использовать функцию LINQ Select().

Листинг программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace OopLabs.Linq

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

listBox1.DataSource = Album.GetAlbums()

.Select(album => album.Artist)

.Distinct()

.ToList();

}

}

}

Рисунок 2. Список исполнителей

Упражнение 2 — Вывод альбомов для групп

В этом упражнении в форме необходимо создать ещё один список, в который будут выведены альбомы выбранного исполнителя. Для реализации задачи следует использовать функцию LINQ Where.

Листинг программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace OopLabs.Linq

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

listBox1.DataSource = Album.GetAlbums()

.Select(album => album.Artist)

.Distinct()

.ToList();

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{

listBox2.DataSource = Album.GetAlbums()

.Where(album => (listBox1.SelectedItem.ToString() == album.Artist))

.ToList();

}

}

}

Рисунок 3. Список альбомов исполнителя

Рисунок 4. Список альбомов исполнителя

Упражнение 3 — Сортировка списков исполнителей и альбомов

В этом упражнении необходимо сделать так, чтобы альбомы сортировались по дате выхода от более поздних к более ранним. Для выполнения задачи используется функция OrderByDescending(). Так же, используя функцию OrderBy(), необходимо сортировать список исполнителей в алфавитном порядке.

Листинг программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace OopLabs.Linq

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

listBox1.DataSource = Album.GetAlbums()

.Select(album => album.Artist)

.OrderBy(album =>album)

.Distinct().ToList();

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{

listBox2.DataSource = Album.GetAlbums()

.Where(album => (listBox1.SelectedItem.ToString() == album.Artist))

.OrderByDescending(album=>album.Date)

.ToList();

}

}

}

Рисунок 5. Вывод отсортированных исполнителей и альбомов

Вывод: В результате выполнения лабораторной работы мы ознакомились с LINQ и применением его основных команд, таких как запрос информации, вывод списков по определённым критериям и сортировка результатов.

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