Запросы в LINQ to Entities
Запрос представляет собой выражение, извлекающее данные из источника данных. Запросы обычно выражаются на специализированном языке запросов, например SQL для реляционных баз данных и XQuery для XML. Поэтому разработчикам приходится учить новый язык запросов для каждого типа источника данных и формата данных, для которых выполняется запрос. Интегрированный в язык запрос (LINQ) предлагает упрощенную согласованную модель работы с данными для различных типов источников данных и различных форматов данных. Запросы LINQ всегда работают с программируемыми объектами.
Операция запроса LINQ состоит из трех действий: получение одного или нескольких источников данных, создание запроса и его выполнение.
К источникам данных, реализующим общий интерфейс IEnumerable<T> или IQueryable<T>, можно выполнять запрос с помощью LINQ. Экземпляры универсального ObjectQuery<T> класса, реализующего универсальный IQueryable<T> интерфейс, служат источником данных для запросов LINQ to Entity. Универсальный класс ObjectQuery<T> представляет запрос, который возвращает коллекцию, включающую ноль или более типизированных объектов. Вы также можете разрешить компилятору определить тип сущности с помощью ключевое слово var
C# (Dim в Visual Basic).
В запросе указываются данные, которые необходимо получить из источника данных. В запросе можно также указать, как следует сортировать, группировать и формировать возвращаемую информацию. В LINQ запрос хранится в переменной. Если запрос возвращает последовательность значений, то переменная запроса должна иметь тип данных, который может быть запрошен. Эта переменная запроса не выполняет никаких действий и не возвращает данные. Она только хранит информацию о запросе. После создания запроса его необходимо выполнить, чтобы получить данные.
Синтаксис запросов
Создание запросов LINQ to Entities может производиться с использованием синтаксиса выражений запросов или синтаксиса запросов на основе методов. Синтаксис выражения запроса является новым в C# 3.0 и Visual Basic 9.0, и состоит из набора предложений, написанных в декларативном синтаксисе, аналогичном Transact-SQL или XQuery. Однако среда CLR платформа .NET Framework не может считывать сам синтаксис выражения запроса. Таким образом, во время компиляции выражения запроса преобразуются в то, что понятно CLR - вызовы методов. Эти методы называются стандартными операторами запросов. Разработчик может вызывать их напрямую, используя синтаксис методов вместо синтаксиса запроса. Дополнительные сведения см. в разделе Синтаксис запросов и синтаксис методов в LINQ.
Синтаксис выражений запросов
Выражения запроса используют декларативный синтаксис запроса. Этот синтаксис позволяет разработчикам писать запросы на высокоуровневом языке, по формату напоминающем Transact-SQL. С помощью синтаксиса выражения запроса можно выполнять даже сложную фильтрацию, упорядочение и группирование операций в источнике данных с помощью минимального программного кода. Дополнительные сведения см. в разделе "Базовые операции запросов" (Visual Basic). Примеры, показывающие применение синтаксиса выражения запросов, см. в следующих разделах.
Синтаксис запросов, основанных на методе
Другим способом создания запросов LINQ to Entity является использование запросов на основе методов. Синтаксис запроса на основе метода — это последовательность прямых вызовов методов оператора LINQ, передавая лямбда-выражения в качестве параметров. Дополнительные сведения см. в разделе Лямбда-выражения. Примеры, показывающие применение синтаксиса на основе методов, см. в следующих разделах.
Примеры синтаксиса запросов на основе методов. Операторы статистических выражений
Примеры синтаксиса запросов на основе методов. Секционирование
Примеры синтаксиса запросов на основе методов. Преобразование
Примеры синтаксиса запросов на основе методов. Операторы соединения
Примеры синтаксиса запросов на основе методов. Операторы элементов
Примеры синтаксиса запросов на основе методов. Отношения навигации