Основы LINQ

Содержание

Слайд 2

LINQ LINQ (Language-Integrated Query) представляет простой и удобный язык запросов к

LINQ

LINQ (Language-Integrated Query) представляет простой и удобный язык запросов к источнику данных.

В качестве источника данных может выступать объект, реализующий интерфейс IEnumerable (например, стандартные коллекции, массивы) Но вне зависимости от типа источника LINQ позволяет применить ко всем один и тот же подход для выборки данных.
Слайд 3

Разновидности LINQ LINQ to Objects: применяется для работы с массивами и

Разновидности LINQ

LINQ to Objects: применяется для работы с массивами и коллекциями
LINQ

to Entities: используется при обращении к базам данных через технологию Entity Framework
LINQ to Sql: технология доступа к данным в MS SQL Server
LINQ to XML: применяется при работе с файлами XML
LINQ to DataSet: применяется при работе с объектом DataSet
Parallel LINQ (PLINQ): используется для выполнения параллельной запросов
Слайд 4

LINQ to Objects В чем же удобство LINQ? Посмотрим на простейшем

LINQ to Objects

В чем же удобство LINQ? Посмотрим на простейшем примере.

Выберем из массива строки, начинающиеся на определенную букву и отсортируем полученный список:
Слайд 5

LINQ to Objects Теперь проведем те же действия с помощью LINQ:

LINQ to Objects

Теперь проведем те же действия с помощью LINQ:

Итак, код

стал меньше и проще. В принципе все выражение можно было бы записать в одну строку:
var selectedTeams = from t in teams where t.ToUpper().StartsWith("Б") orderby t select t
Слайд 6

Простейший запрос LINQ Простейшее определение запроса LINQ выглядит следующим образом: Итак,

Простейший запрос LINQ

Простейшее определение запроса LINQ выглядит следующим образом:

Итак, что делает

этот запрос LINQ? Выражение from t in teams проходит по всем элементам массива teams и определяет каждый элемент как t. Используя переменную t мы можем проводить над ней разные операции
Слайд 7

Примененные операторы в запросе LINQ C помощью оператора where проводится фильтрация

Примененные операторы в запросе LINQ

C помощью оператора where проводится фильтрация объектов,

и если объект соответствует критерию (в данном случае начальная буква должна быть "Б"), то этот объект передается дальше.
Оператор orderby упорядочивает по возрастанию, то есть сортирует выбранные объекты.
Оператор select передает выбранные значения в результирующую выборку.
Слайд 8

Методы расширения LINQ Кроме стандартного синтаксиса from .. in .. select

Методы расширения LINQ

Кроме стандартного синтаксиса from .. in .. select для

создания запроса LINQ мы можем применять специальные методы расширения. Как правило, эти методы реализуют ту же функциональность, что и операторы LINQ типа where или orderby.
Слайд 9

Фильтрация выборки Для выбора элементов из некоторого набора по условию используется

Фильтрация выборки

Для выбора элементов из некоторого набора по условию используется метод Where.

Например, выберем все четные элементы, которые больше 10.
Слайд 10

Фильтрация выборки Тот же запрос с помощью метода расширения:

Фильтрация выборки

Тот же запрос с помощью метода расширения:

Слайд 11

Сортировка Для сортировки набора данных по возрастанию используется оператор orderby:

Сортировка

Для сортировки набора данных по возрастанию используется оператор orderby:

Слайд 12

Сортировка По умолчанию оператор orderby производит сортировку по возрастанию. Однако с

Сортировка

По умолчанию оператор orderby производит сортировку по возрастанию. Однако с помощью

ключевых слов ascending (сортировка по возрастанию) и descending (сортировка по убыванию) можно явным образом указать направление сортировки:
Слайд 13

Сортировка Вместо оператора orderby можно использовать методы расширения OrderBy или OrderByDescending:

Сортировка

Вместо оператора orderby можно использовать методы расширения OrderBy или OrderByDescending:

Слайд 14

Разность множеств С помощью метода Except можно получить разность двух множеств:

Разность множеств

С помощью метода Except можно получить разность двух множеств:

Слайд 15

Пересечение множеств Для получения пересечения множеств, то есть общих для обоих наборов элементов, применяется метод Intersect:

Пересечение множеств

Для получения пересечения множеств, то есть общих для обоих наборов

элементов, применяется метод Intersect:
Слайд 16

Объединение множеств Для объединения двух множеств используется метод Union. Его результатом

Объединение множеств

Для объединения двух множеств используется метод Union. Его результатом является новый

набор, в котором имеются элементы, как из одного, так и из второго множества. Повторяющиеся элементы добавляются в результат только один раз:
Слайд 17

Удаление дубликатов Для удаления дублей в наборе используется метод Distinct: Последовательное

Удаление дубликатов

Для удаления дублей в наборе используется метод Distinct:

Последовательное применение методов Concat

и Distinct будет подобно действию метода Union.
Слайд 18

Агрегатные операции К агрегатным операциям относят различные операции над выборкой, например,

Агрегатные операции

К агрегатным операциям относят различные операции над выборкой, например, получение

числа элементов, получение минимального, максимального и среднего значения в выборке, а также суммирование значений.
Count
Sum
Min
Max
Average
Слайд 19

Получение размера выборки. Метод Count Для получения числа элементов в выборке используется метод Count():

Получение размера выборки. Метод Count

Для получения числа элементов в выборке используется

метод Count():
Слайд 20

Получение суммы Для получения суммы значений применяется метод Sum:

Получение суммы

Для получения суммы значений применяется метод Sum:

Слайд 21

Максимальное, минимальное и среднее значения Для нахождения минимального значения применяется метод

Максимальное, минимальное и среднее значения

Для нахождения минимального значения применяется метод Min(), для

получения максимального - метод Max(), а для нахождения среднего значения - метод Average(). Их действие похоже на методы Sum и Count:
Слайд 22

Группировка Для группировки данных по определенным параметрам применяется оператор group by или метод GroupBy():

Группировка

Для группировки данных по определенным параметрам применяется оператор group by или метод GroupBy():

Слайд 23

Методы Skip и Take Метод Skip() пропускает определенное количество элементов. метод

Методы Skip и Take

Метод Skip() пропускает определенное количество элементов.
метод Take() извлекает определенное число элементов.

Извлечем три

первых элемента:

Выберем все элементы, кроме первых трех:

Слайд 24

Методы TakeWhile и SkipWhile Метод TakeWhile выбирает цепочку элементов, начиная с

Методы TakeWhile и SkipWhile

Метод TakeWhile выбирает цепочку элементов, начиная с первого элемента, пока

они удовлетворяют определенному условию:

В подобном русле действует метод SkipWhile. Он пропускает цепочку элементов, начиная с первого элемента, пока они удовлетворяют определенному условию:

Слайд 25

Методы All, Any и Contains Метод All проверяет, соответствуют ли все

Методы All, Any и Contains

Метод All проверяет, соответствуют ли все элементы

условию. Например, узнаем, у всех ли пользователей возраст превышает 20:
Слайд 26

Методы All, Any и Contains Метод Any действует подобным образом, только

Методы All, Any и Contains

Метод Any действует подобным образом, только позволяет

узнать, соответствует ли хотя бы один элемент коллекции определенному условию: